// // main.m // KenshinCui // // Created by hxd_mac on 15-6-7. // Copyright (c) 2015年 hxd198. All rights reserved. // #import <Foundation/Foundation.h> #import "Person.h" void Test1() { //初始化字典 //一般方式 NSDictionary *dict1 = [NSDictionary dictionaryWithObject:@"1" forKey:@"a"]; NSLog(@"dict1: %@", dict1); //常见方式 NSDictionary *dict2 = [NSDictionary dictionaryWithObjectsAndKeys:@"1",@"a",@"2",@"b",@"3",@"c", nil]; NSLog(@"dict2: %@", dict2); //嵌套方式 NSDictionary *dict3 = [NSDictionary dictionaryWithObject:[NSArray arrayWithObjects:@"value1",@"value2", nil] forKey:[NSArray arrayWithObjects:@"key1",@"key2", nil]]; NSLog(@"dict3: %@", dict3); //最简单方式 NSDictionary *dict4 = @{@"1": @"a", @"2": @"b", @"3": @"c"}; NSLog(@"dict4: %@", dict4); } void Test2() { //字典一般用法 NSDictionary *dict1 = [NSDictionary dictionaryWithObjectsAndKeys:@"1",@"a",@"2",@"b",@"3",@"c",@"4",@"d", nil]; //统计个数 NSLog(@"count: %zi", [dict1 count]); //key找value //第一种方式 NSLog(@"value1: %@", [dict1 valueForKey:@"b"]); //第二种方式 NSLog(@"value2: %@", dict1[@"b"]); //第三种方式 NSLog(@"allValue: %@ , allKey: %@", [dict1 allValues], [dict1 allKeys]); // NSLog(@"value and key: %@", [dict1 objectForKey:[NSArray arrayWithObjects:@"a",@"e", nil]notFoundMarker: @"not found"]); } void Test3() { //字典遍历三种方法 NSDictionary *dict1 = [NSDictionary dictionaryWithObjectsAndKeys:@"1",@"a",@"2",@"b",@"3",@"c",@"4",@"d", nil]; id key; //常规遍历 for (key in dict1) { NSLog(@"key: %@ value: %@", key, [dict1 objectForKey:key]); } //枚举快速遍历 NSEnumerator *enumerator = [dict1 keyEnumerator]; id obj = nil; while ( obj = [enumerator nextObject]) { NSLog(@"%@ = %@", obj, [dict1 objectForKey:obj]); } //块遍历 [dict1 enumerateKeysAndObjectsUsingBlock: ^(id key , id obj, BOOL *stop){ NSLog(@"key = %@, obj = %@", key, obj); }]; } void Test4() { //可变字典的一般用法 NSMutableDictionary *dict1 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"1",@"a",@"2",@"b",@"3",@"c",@"4",@"d", nil]; //移除对象 [dict1 removeObjectForKey:@"b"]; NSLog(@"after remove:%@", dict1); //添加对象 [dict1 addEntriesFromDictionary:[NSDictionary dictionaryWithObjectsAndKeys:@"5",@"e",@"6",@"f", nil]]; NSLog(@"after add: %@", dict1); //重置对象的值 [dict1 setValue:@"7" forKey:@"a"]; NSLog(@"after set: %@", dict1); } int main(int argc, const char * argv[]) { @autoreleasepool { Test1(); Test2(); Test3(); Test4(); } return 0; }
输出结果:
2015-06-08 20:42:49.632 KenshinCui[596:303] dict1: {
a = 1;
}
2015-06-08 20:42:49.639 KenshinCui[596:303] dict2: {
a = 1;
b = 2;
c = 3;
}
2015-06-08 20:42:49.641 KenshinCui[596:303] dict3: {
(
key1,
key2
) = (
value1,
value2
);
}
2015-06-08 20:42:49.642 KenshinCui[596:303] dict4: {
1 = a;
2 = b;
3 = c;
}
2015-06-08 20:42:49.644 KenshinCui[596:303] count: 4
2015-06-08 20:42:49.646 KenshinCui[596:303] value1: 2
2015-06-08 20:42:49.648 KenshinCui[596:303] value2: 2
2015-06-08 20:42:49.649 KenshinCui[596:303] allValue: (
4,
2,
3,
1
) , allKey: (
d,
b,
c,
a
)
2015-06-08 20:42:49.650 KenshinCui[596:303] key: d value: 4
2015-06-08 20:42:49.651 KenshinCui[596:303] key: b value: 2
2015-06-08 20:42:49.673 KenshinCui[596:303] key: c value: 3
2015-06-08 20:42:49.675 KenshinCui[596:303] key: a value: 1
2015-06-08 20:42:49.817 KenshinCui[596:303] d = 4
2015-06-08 20:42:49.818 KenshinCui[596:303] b = 2
2015-06-08 20:42:49.819 KenshinCui[596:303] c = 3
2015-06-08 20:42:49.820 KenshinCui[596:303] a = 1
2015-06-08 20:42:49.821 KenshinCui[596:303] key = d, obj = 4
2015-06-08 20:42:49.822 KenshinCui[596:303] key = b, obj = 2
2015-06-08 20:42:49.824 KenshinCui[596:303] key = c, obj = 3
2015-06-08 20:42:49.826 KenshinCui[596:303] key = a, obj = 1
2015-06-08 20:42:49.829 KenshinCui[596:303] after remove:{
a = 1;
c = 3;
d = 4;
}
2015-06-08 20:42:49.831 KenshinCui[596:303] after add: {
a = 1;
c = 3;
d = 4;
e = 5;
f = 6;
}
2015-06-08 20:42:49.833 KenshinCui[596:303] after set: {
a = 7;
c = 3;
d = 4;
e = 5;
f = 6;
}