IOS字典NSDictionary与NSMutableDictionary知识点

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

字典中的元素是以键值对的形式存储的,键值对的键和值,都是任意的对象,但是键往往使用字符串,字典存储对象的地址没有顺序,字典的遍历分为:键的遍历和值的遍历,字典与数组的区别:数组讲究顺序,而字典可以快速帮助我们找到数据,数据是我们的目的,键是我们的手段;其中NSMutableDictionary是NSDictionary的子类,所以其拥有NSDictionary所有的功能;主要是一些常见的操作,别外一些操作见其相应的文档,下面的代码部分还运用的第三方插件BlocksKit相结合;

a:NSDictionary是由键值对(key-value)组成的数据集合

b:键:可以是任何对象 (通常是NSString类型的对象),同时键必须是单值

c:值:可以是任何对象,不能为nil

d:常用方式:我们根据键来查找相应值

e:字典有可变的和不可变的,可变的字典中可动态的添加和删除元素

f:和数组不同,字典是无序的

1:NSDictionary一些常见的操作

//创建词典NSDictionary *dictionary=[NSDictionary dictionaryWithObjectsAndKeys:@"wujy",@"name",@29,@"age",nil];

NSInteger Count=[dictionary count];

NSLog(@"词典的个数为%ld",Count);//得到词典中的所有keyNSEnumerator *enumeratorkey=[dictionary keyEnumerator];for(NSObject *objinenumeratorkey) {

NSLog(@"key为:%@",obj);

NSLog(@"通过key找到value值为:%@",[dictionary objectForKey:obj]);

}//得到词典中的所有value值NSEnumerator *enumeratorvalue=[dictionary objectEnumerator];for(NSObject *objinenumeratorvalue) {

NSLog(@"value为:%@",obj);

}//简便的方式创建 key排前面value排后面NSDictionary *newDictionary=@{@"name":@"wujy",@"age":@29};

NSArray*keyArray=[newDictionary allKeys];for(NSObject *objinkeyArray) {

NSLog(@"key的值为:%@",obj);

}

NSArray*valueArray=[newDictionary allValues];for(NSObject *objinvalueArray) {

NSLog(@"value的值为:%@",obj);

}//blocks插件NSDictionary *blockDictionary=[NSDictionary dictionaryWithObjects:[[NSArray alloc] initWithObjects:@3,@15,@29,nil] forKeys:[[NSArray alloc] initWithObjects:@"IOS",@"work",@"age",nil]];//遍历[blockDictionary bk_each:^(id key, id obj) {

NSLog(@"使用blocks的key为:%@",key);

NSLog(@"对应的value为:%@",obj);

}];//过滤只在第一个符合条件时就停止

NSDictionary *matchDictionary=[blockDictionary bk_match:^BOOL(id key, id obj) {

BOOLselect=[obj intValue]<10?YES:NO;returnselect;

}];

NSLog(@"match符合的项为:%@",matchDictionary);//过滤NSDictionary *selectDictionary=[blockDictionary bk_select:^BOOL(id key, id obj) {

BOOLselect=[obj intValue]>10?YES:NO;returnselect;

}];

NSLog(@"select符合的项为%@",selectDictionary);//反向过滤NSDictionary *rejectDictionary=[blockDictionary bk_reject:^BOOL(id key, id obj) {

BOOLselect=[obj intValue]>10?YES:NO;returnselect;

}];

NSLog(@"reject符合的项为%@",rejectDictionary);//对各个项进行修改NSDictionary *mapDictinary=[blockDictionary bk_map:^id(id key, id obj) {return[NSNumber numberWithInt:[obj intValue]+1];

}];

NSLog(@"map修改后的项为%@",mapDictinary);//是否符合条件 返回boolBOOL isSelected=[blockDictionary bk_any:^BOOL(id key, id obj) {

BOOLselect=[obj intValue]>20?YES:NO;returnselect;

}];

NSLog(@"%d符合条件",isSelected);//判断是否所有的项都符合这个条件BOOL allSelected=[blockDictionary bk_all:^BOOL(id key, id obj) {

BOOLselect=[obj intValue]>20?YES:NO;returnselect;

}];

NSLog(@"%d符合条件",allSelected);//判断是否所有的项都不符合这个条件BOOL noneSelected=[blockDictionary bk_none:^BOOL(id key, id obj) {

BOOLselect=[obj intValue]>50?YES:NO;returnselect;

}];

NSLog(@"%d符合条件",noneSelected);

2:NSMutableDictionary一些常见的操作

//创建一个nsmutabledictionaryNSMutableDictionary *mutableDictionary=[NSMutableDictionary dictionaryWithCapacity:3];

[mutableDictionary setObject:@"wujy"forKey:@"name"];

[mutableDictionary setObject:@"cnblogs.com/wujy"forKey:@"webName"];

[mutableDictionary setObject:@29forKey:@"age"];//得到词典中的所有keyNSEnumerator *enumeratorkey=[mutableDictionary keyEnumerator];for(NSObject *objinenumeratorkey) {

NSLog(@"key为:%@",obj);

NSLog(@"通过key找到value值为:%@",[mutableDictionary objectForKey:obj]);

}//删除其中一个key[mutableDictionary removeObjectForKey:@"name"];

NSLog(@"删除name的key以后值:%@",mutableDictionary);

[mutableDictionary removeAllObjects];

NSLog(@"删除所有以后,可变词典个数为%ld",[mutableDictionary count]);//blocks//过滤NSMutableDictionary *newmutableDictionary=[NSMutableDictionary dictionaryWithDictionary:@{@"IOS":@3,@"work":@13,@"age":@29}];

[newmutableDictionary bk_performSelect:^BOOL(id key, id obj) {

BOOLselect=[obj intValue]>10?YES:NO;returnselect;

}];

NSLog(@"过滤后的可变词典为(29,13)%@",newmutableDictionary);//取反过滤[newmutableDictionary bk_performReject:^BOOL(id key, id obj) {

BOOLselect=[obj intValue]>20?YES:NO;returnselect;

}];

NSLog(@"取反过滤的可变词典为(13)%@",newmutableDictionary);//修改各个项的结果[newmutableDictionary bk_performMap:^id(id key, id obj) {return@([obj intValue]+1);

}];

NSLog(@"修改后的可变词典为(14)%@",newmutableDictionary);

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航