Objective-c 字典對象,objective-c字典
oc 中的 NSDictionary 的作用同 java 中的字典類相同,提供了 “鍵-值”對的組合。比如,是用字典類實現對學生姓名和學號的存放,編號是一個鍵(唯一性),姓名是值。它的方法有:
下面通過例子來具體說明它的用法:
1)構建字典
1 #import <Foundation/Foundation.h> 2 3 int main(int argc , const char *argv[]){ 4 @autoreleasepool{ 5 NSDictionary *dicti1 = [NSDictionary dictionaryWithObjectsAndKeys:@"zhangsan",@"1",@"lisi",@"2",@"wangwu",@"3", nil]; 6 NSEnumerator *keynum = [dicti1 keyEnumerator]; 7 for(NSString *key in keynum) 8 NSLog(@"key = %@ , value = %@",key,[dicti1 objectForKey:key]); 9 10 NSLog(@"----------------------------");11 NSDictionary *dicti2 = [[NSDictionary alloc]initWithObjectsAndKeys:@"zhangsan",@"1",@"lisi",@"2",@"wangwu",@"3", nil];12 keynum = [dicti2 keyEnumerator];13 for(NSString *key in keynum)14 NSLog(@"key = %@ , value = %@",key,[dicti2 objectForKey:key]);15 16 NSLog(@"----------------------------");17 NSDictionary *dicti3 = @{@"1":@"zhangsan",@"2":@"lisi",@"3":@"wangwu"};18 keynum = [dicti3 keyEnumerator];19 for(NSString *key in keynum)20 NSLog(@"key = %@ , value = %@",key,[dicti3 objectForKey:key]);21 22 NSLog(@"------------------------------");23 NSArray *keyarray = @[@"1",@"2",@"3"];24 NSArray *valuearray = @[@"zhangsan",@"lisi",@"wangwu"];25 NSDictionary *dicti4 = [NSDictionary dictionaryWithObjects:valuearray forKeys:keyarray];26 keynum = [dicti4 keyEnumerator];27 for(NSString *key in keynum)28 NSLog(@"key = %@ , value = %@",key,[dicti4 objectForKey:key]);29 30 }31 return 0;32 }
2)字典的遍曆
1 #import <Foundation/Foundation.h> 2 3 int main(int argc , const char *argv[]){ 4 @autoreleasepool { 5 NSDictionary *dicti = [NSDictionary dictionaryWithObjectsAndKeys:@"zhangsan",@"1",@"lisi",@"2",@"wangwu",@"3", nil]; 6 NSEnumerator *number = [dicti keyEnumerator]; 7 for(NSString *key in number) 8 NSLog(@"key = %@ , value = %@",key,[dicti objectForKey:key]); 9 10 NSLog(@"----------------------------");11 NSArray *keyarray = [dicti allKeys];12 for(NSString *key in keyarray)13 NSLog(@"key = %@ , value = %@",key,[dicti objectForKey:key]);14 15 NSLog(@"-----------------------------");16 for(NSString *key in dicti)17 NSLog(@"key = %@ , value = %@",key,[dicti objectForKey:key]);18 19 NSLog(@"-----------------------------");20 [dicti enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {21 NSLog(@"key = %@ ,value = %@",key,obj);22 }];23 }
return 0;24 }
3) 檔案的讀取
1 #import <Foundation/Foundation.h> 2 3 int main(int argc , const char *argv[]){ 4 @autoreleasepool { 5 NSDictionary *dicti = [NSDictionary dictionaryWithObjectsAndKeys:@"zhangsan",@"1",@"lisi",@"2",@"wangnwu",@"3",nil]; 6 7 NSString *filename = @"dicti.txt"; 8 BOOL iswrite = [dicti writeToFile:filename atomically:YES]; 9 if(iswrite)10 NSLog(@"write to file ok");11 else12 NSLog(@"write to file error");13 14 NSDictionary *dicti2 = [NSDictionary dictionaryWithContentsOfFile:filename];15 NSLog(@"dicti2 = %@",dicti2);16 17 }
return 0;18 }
4) 尋找
1 #import <Foundation/Foundation.h> 2 3 int main(int argc , const char *argv[]) 4 { 5 @autoreleasepool { 6 NSDictionary *dicti = [NSDictionary dictionaryWithObjectsAndKeys:@"zhangsan",@"1",@"lisi",@"2",@"wangwu",@"3",@"zhangsan",@"4",nil]; 7 8 NSArray *keyarray = [dicti allKeys]; // 尋找所有索引值 9 NSLog(@"%@",keyarray);10 11 NSArray *valuearray = [dicti allValues]; // 尋找所有值12 NSLog(@"%@",valuearray);13 14 NSString *value = [dicti objectForKey:@"1"]; // 按索引值尋找15 NSLog(@"value = %@",value);16 17 value = dicti[@"2"];18 NSLog(@"value = %@",value);19 20 NSArray *keyarray2 = @[@"1",@"2",@"3"]; // 利用數組的方式尋找21 NSArray *vlauearray2 = [dicti objectsForKeys:keyarray2 notFoundMarker:@"nil"];22 NSLog(@"vlauearray2 = %@",vlauearray2);23 24 NSArray *keyarray3 = [dicti allKeysForObject:@"zhangsan"];25 NSLog(@"keyarray3 = %@",keyarray3);26 27 NSDictionary *dicti2 = [dicti dictionaryWithValuesForKeys:keyarray2];28 NSLog(@"dicti2 = %@",dicti2);29 }30 return 0;31 }
5) 排序
1 #import <Foundation/Foundation.h> 2 3 4 int main(int argc,char **argv){ 5 @autoreleasepool { 6 NSDictionary *dicti = [NSDictionary dictionaryWithObjectsAndKeys:@"zhangsan",@"2",@"lisi",@"3",@"wangwu",@"1",@"zhangsan",@"4",nil]; 7 NSLog(@"dicti = %@",dicti); 8 9 NSDictionary *dicti2 = [NSDictionary dictionaryWithObjectsAndKeys:@"zhangsan",@1,@"lisi",@2,@"wangu",@3, nil];10 NSLog(@"dicti2 = %@",dicti2);11 12 NSArray *array = [dicti2 keysSortedByValueUsingSelector:@selector(compare:)];13 for(NSNumber *key in array)14 NSLog(@"key = %@,value = %@",key,dicti2[key]);15 }16 return 0;17 }
2. 同樣字典對象中也存在可變字典(NSDictionary),下面我們來通過一個例子來說明它的用法:
代碼舉例:
1 #import <Foundation/Foundation.h> 2 3 4 int main(int argc,char **argv){ 5 @autoreleasepool { 6 NSMutableDictionary *mdicti = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"zhangsan",@"1",@"lisi",@"2",@"wangwu",@"3",nil]; 7 8 [mdicti setValue:@"zhaoliu" forKey:@"4"]; // 如果 key 不存在就添加,key 存在就修改 9 NSLog(@"mdicti = %@",mdicti);10 11 [mdicti setValue:@"zzz" forKey:@"1"];12 NSLog(@"mdicti = %@",mdicti);13 14 mdicti[@"5"] = @"bbb";15 NSLog(@"mdicti = %@",mdicti);16 17 NSDictionary *dicti = [NSDictionary dictionaryWithObjectsAndKeys:@"aaa",@"11",@"bbb",@"12",@"ccc",@"13",nil];18 [mdicti addEntriesFromDictionary:dicti];19 NSLog(@"dicti = %@",mdicti);20 21 [mdicti removeObjectForKey:@"1"]; // 刪除22 NSLog(@"mdicti = %@",mdicti);23 24 NSArray *array = @[@"11",@"12",@"13"];25 [mdicti removeObjectsForKeys:array];26 NSLog(@"mdicti = %@",mdicti);27 28 [mdicti removeAllObjects]; // 刪除所有的29 NSLog(@"%@",mdicti);30 }31 return 0;32 }