遍历NSArray, NSDictionary, NSSet的方法总结
1,for循环读取
NSArray:
NSArray *array = /*…*/
for(int i=; i<array.count; i++)
{
id object = array[i];
// do sth
} NSDictionary:
NSDictionary *dic = /*…*/
NSArray *keys = [dic allKeys];
for(int i=; i<keys.count; i++)
{
id key = keys[i];
id value = dic[key];
//do sth
} NSSet:
NSSet *set = /*…*/
NSArray *objects = [set allObjects];
for(int i=; i<objects.count; i++)
{
id object = objects[i];
//do sth
}
2, NSEnumerator类来循环
NSArray:
NSArray *array = /*…*/
NSEnumerator *enumerator = [array objectEnumerator];
id object;
while((object = [enumerator nextObject]) != nil)
{
//do sth with 'object'
} NSDictionary:
NSDictionary *dic = /*…*/
NSEnumerator *enumerator = [dic keyEnumerator];
id key;
while((key = [enumerator nextObject]) != nil)
{
id value = dic[key];
//do sth
} NSSet:
NSSet *set = /*…*/
NSEnumerator *enumerator = [set objectEnumerator];
id object;
while((object = [enumerator nextObject]) != nil)
{
//do sth with 'object'
} //逆序
NSArray:
NSArray *array = /*…*/
NSEnumerator *enumerator = [array reverseObjectEnumerator];
id object;
while((object = [enumerator nextObject]) != nil)
{
//do sth with 'object'
}
3, 快速遍历
NSArray:
NSArray *array = /*…*/
for(id object in array){
//do sth with 'object'
} NSDictionary:
NSDictionary *dic = /*…*/
for(id key in dic){
id value = dic[key];
//do sth with 'value'
} NSSet:
NSSet *set = /*…*/
for(id object in set){
//do sth with 'object'
} //逆序
NSArray:
NSArray *array = /*…*/
for(id object in [array reverseObjectEnumerator]){
//do sth with 'object'
}
4, 块枚举法
NSArray: -(void) enumerateObjectsUsingBlock:(void(^)(id object, NSUInteger idx, BOOL *stop)) block;
NSDictionary: -(void) enumerateKeysAndObjectsUsingBlock(void(^)(id key, id object, BOOL *stop)) block;
NSSet: -(void) enumerateObjectsUsingBlock:(void(^)(id object, BOOL *stop)) block; 逆序或者并发遍历,使用带有‘选项掩码’的块遍历方法:
NSArray: -(void) enumerateObjectsWithOptions:(NSEnumerationOptions)options
usingBlock:(void(^)(id object, NSUInteger idx, BOOL *stop)) block;
NSDictionary: -(void) enumerateKeysAndObjectsWithOptions:(NSEnumerationOptions)options
usingBlock:(void(^)(id key, id object, BOOL *stop)) block;
NSSet: -(void) enumerateObjectsWithOptions:(NSEnumerationOptions)options
usingBlock:(void(^)(id object, BOOL *stop)) block; 其中:NSEnumerationOptions类型是个Enum,其各种取值可用“按位或”(bitwise OR)连接,用以表明遍历方式。
NSEnumerationConcurrent:并发方式执行各轮迭代
NSEnumerationReverse:逆向 NSArray:
NSArray *array = /*…*/
[array enumerateObjectsUsingBlock:
^(id object, NSUInteger idx, BOOL *stop){
//do sth with 'object'
if(shouldstop){
*stop = YES;
}
}] NSDictionary:
NSDictionary *dic = /*…*/
[dic enumerateKeysAndObjectsUsingBlock:
^(id key, id object, BOOL *stop){
//do sth
if(shouldstop){
*stop = YES;
}
}] NSSet:
NSSet *set = /*…*/
[set enumerateObjectsUsingBlock:
^(id object, BOOL* stop){
//do sth
if(shouldstop){
*stop = YES;
}
}] //逆序、并发
NSArray:
NSArray *array = /*…*/
[array enumerateObjectsWithOptions:NSEnumerationReverse|NSEnumerationConcurrent
usingBlock:^(id object, NSUInteger idx, BOOL* stop){
//do sth
if(shouldstop){
*stop = YES;
}
}]
遍历NSArray, NSDictionary, NSSet的方法总结的更多相关文章
- [转]一些NSArray,NSDictionary,NSSet相关的算法知识
iOS编程当中的几个集合类:NSArray,NSDictionary,NSSet以及对应的Mutable版本,应该所有人都用过.只是简单使用的话,相信没人会用错,但要做到高效(时间复杂度)精确(业务准 ...
- Fouandation(NSString ,NSArray,NSDictionary,NSSet) 中常见的理解错误区
Fouandation 中常见的理解错误区 1.NSString //快速创建(实例和类方法) 存放的地址是 常量区 NSString * string1 = [NSString alloc]init ...
- 一些NSArray,NSDictionary,NSSet相关的算法知识
iOS编程当中的几个集合类:NSArray,NSDictionary,NSSet以及对应的Mutable版本,应该所有人都用过.只是简单使用的话,相信没人会用错,但要做到高效(时间复杂度)精确(业务准 ...
- [翻译] 用 ObjectiveSugar 扩展NSArray NSDictionary NSSet NSNumber
source - https://github.com/supermarin/ObjectiveSugar Look like a girl, act like a lady, think like ...
- oc/object-c/ios哪种遍历NSArray/NSDictionary方式快?测试报告
做app的时候,总免不了要多次遍历数组或者字典.究竟哪种遍历方式比较快呢?我做了如下测试:首先定义测试用宏: ? 1 2 3 4 5 6 7 8 9 #define MULogTimeinterval ...
- Read and Write NSArray, NSDictionary and NSSet to a File
查询地址:http://iosdevelopertips.com/data-file-management/read-and-write-nsarray-nsdictionary-and-nsset- ...
- 重写NSArray与NSDictionary的descriptionWithLocale方法
重写NSArray的descriptionWithLocale方法: NSArray+log.h #import <Foundation/Foundation.h> @interface ...
- iOS - 数组与字典(NSArray & NSDictionary)
1. 数组的常用处理方式 //--------------------不可变数组 //1.数组的创建 NSString *s1 = @"zhangsan"; NSString *s ...
- NSData NSDate NSString NSArray NSDictionary 相互转换
// NSData NSDate NSString NSArray NSDictionary json NSString *string = @"hello word"; NSDa ...
随机推荐
- Android聚合广告AFP的对接系统设计
工作需要,要对接阿里妈妈的广告聚合平台,简称AFP.对于一般的应用而言,想要流量变现,广告是显而易见的手段,尤其是在中国,打开一个千万级别的用户,肯定有某个地方是有对接广告的,只不过明不明显而已. 阿 ...
- 寻找Fragment的替代品的尝试
自从Android在3.0推出Fragment之后,现在很多应用的设计都是建立在Fragment的基础上,像是多个tab切换这种需求,就可以使用Fragment,并且Fragment提供了一系列生命周 ...
- javascrpt插入html中中文字符乱码问题记录
问题就是我使用js做这么个事情: var description = [ '你好', '你好', '你好', '你好' ]; var link = ''; var logLink = ''; ; i ...
- HTML5版的String Avoider小游戏
HTML5版的String Avoider小游戏 http://www.newgrounds.com/portal/view/300760 蛮简单也蛮考验耐心,从游戏起始点移动鼠标到终点位置,鼠标移动 ...
- 设置与获取Cookie
自己编写的一个Cookie设置与获取函数,大家有什么感觉需要改进的地方,请告知与我,我一定虚心接受. JavaScript - Code: function setCookie(name,value, ...
- C#写爬虫,版本V1.0
之前看了Sql Server中的基本数据类型,发现image这个类型还是比较特殊的. 于是乎就做了一个将图片以二进制流形式存储的程序http://www.cnblogs.com/JsonZhangAA ...
- Failed to create the Java Virtual Machine.问题的解决
运行Eclipse,出现了"Failed to create the Java Virtual Machine."错误: 解决的办法是在Eclipse的解压目录下找到eclipse ...
- 导入项目时Loading descriptor ...
最近导入了一个项目,始终在Loading descriptor ...,很长时间都没有结束. 这是Eclipse在从java.sun.com的服务器上下载配置文件,下载速度过慢导致的,其实配置文件不是 ...
- MySQL: @variable vs. variable. Whats the difference?
MySQL: @variable vs. variable. Whats the difference? up vote351down votefavorite 121 In another qu ...
- Windows Embedded Standard 7 (WES7)系统定制遇到的问题(摄像头,喇叭,无线wifi)
由于项目需要,需要对WES7系统进行定制,删除所有Windows字样基本没有什么问题,主要遇到如下3个问题: 1. 摄像头在Application模板下不能正常使用,即使安装驱动: 2. Jabra喇 ...