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的方法总结的更多相关文章

  1. [转]一些NSArray,NSDictionary,NSSet相关的算法知识

    iOS编程当中的几个集合类:NSArray,NSDictionary,NSSet以及对应的Mutable版本,应该所有人都用过.只是简单使用的话,相信没人会用错,但要做到高效(时间复杂度)精确(业务准 ...

  2. Fouandation(NSString ,NSArray,NSDictionary,NSSet) 中常见的理解错误区

    Fouandation 中常见的理解错误区 1.NSString //快速创建(实例和类方法) 存放的地址是 常量区 NSString * string1 = [NSString alloc]init ...

  3. 一些NSArray,NSDictionary,NSSet相关的算法知识

    iOS编程当中的几个集合类:NSArray,NSDictionary,NSSet以及对应的Mutable版本,应该所有人都用过.只是简单使用的话,相信没人会用错,但要做到高效(时间复杂度)精确(业务准 ...

  4. [翻译] 用 ObjectiveSugar 扩展NSArray NSDictionary NSSet NSNumber

    source - https://github.com/supermarin/ObjectiveSugar Look like a girl, act like a lady, think like ...

  5. oc/object-c/ios哪种遍历NSArray/NSDictionary方式快?测试报告

    做app的时候,总免不了要多次遍历数组或者字典.究竟哪种遍历方式比较快呢?我做了如下测试:首先定义测试用宏: ? 1 2 3 4 5 6 7 8 9 #define MULogTimeinterval ...

  6. Read and Write NSArray, NSDictionary and NSSet to a File

    查询地址:http://iosdevelopertips.com/data-file-management/read-and-write-nsarray-nsdictionary-and-nsset- ...

  7. 重写NSArray与NSDictionary的descriptionWithLocale方法

    重写NSArray的descriptionWithLocale方法: NSArray+log.h #import <Foundation/Foundation.h> @interface ...

  8. iOS - 数组与字典(NSArray & NSDictionary)

    1. 数组的常用处理方式 //--------------------不可变数组 //1.数组的创建 NSString *s1 = @"zhangsan"; NSString *s ...

  9. NSData NSDate NSString NSArray NSDictionary 相互转换

    // NSData NSDate NSString NSArray NSDictionary json NSString *string = @"hello word"; NSDa ...

随机推荐

  1. WCF实现方法重载

    一.服务契约(包括回调契约)通过指定不同的OperationContract.Name来实现重载方法,当然代码部份还是必需符合C#的重载要求,即相同方法名称,不同的参数个数或参数类型 namespac ...

  2. JS魔法堂: Native Promise Only源码剖析

    一, 前言 深入学习Promise的朋友应该都看过<深入理解Promise五部曲>这一系列的文章, 以解除回调地狱之外的观点来剖析Promise更多的内涵,确实十分精彩. Part 1: ...

  3. 前端构建:Less入了个门

    一.前言   说到前端构建怎能缺少CSS预处理器呢!其实CSS的预处理器有很多啦,比较出名的有Scss.Sass.Stylus和Less.(最近还听说出现了Autoprefixer等CSS后处理器,可 ...

  4. 微信开发系列----02:实现POST请求响应

    继续昨天的,现在我们的微信测试成功了,可以开发实现微信的各种功能,今天主要实现微信的简单交互,比如发送语音,图片,文本等请求,网站服务器发送对应的响应. 项目GitHub地址:  https://gi ...

  5. C# winform控件之listview学习积累

    //1.用key给ListViewItem 的 SubItems赋值 ListViewItem listViewItem= listView1.Items.Add("第一列文字") ...

  6. 如何使用C#创建WebService

    使用C#创建WebService,服务端的webservice是必须,中间的soap,Xml我们不用去关心.下面是使用C#创建WebService的简单介绍. AD:51CTO技术沙龙 | 赋予APP ...

  7. 建立MySQL的ODBC

    1. 进入控制面板->管理工具->数据源(ODBC): 2. 点击添加,数据源驱动程序选择MySQL ODBC 5.1 Driver: 3. 弹出MySQL Connecotor/ODBC ...

  8. Firemonkey ListView 点击事件

    Firemonkey ListView 的点击事件一直让人摸不着头绪(各平台触发规则不太相同),因为它提供了点击相关的事件就有如下: OnChange:改变项目触发. OnClick:点击触发. On ...

  9. Firemonkey 控件设定字型属性及颜色

    将控件 StyledSettings 的勾取消(如此才能自定样式及字型,如果勾选则依 Style 而定). 设定 TextSettings 里的 Font 属性. 使用代码寫法: CheckBox1. ...

  10. PHP高效率写法

    1.尽量静态化: 如果一个方法能被静态,那就声明它为静态的,速度可提高1/4,甚至我测试的时候,这个提高了近三倍.当然了,这个测试方法需要在十万级以上次执行,效果才明显.其实静态方法和非静态方法的效率 ...