遍历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 ...
随机推荐
- QT学习笔记4
顶层窗口-MainWindow 新建项目,选择基类的时Base Class是QMainWindow 最上面是Window Title,用于显示标题和控制按钮,比如最大化.最小化和关闭等:下面一些是Me ...
- Asp.net 加密解密类
namespace Wedn.Net { /// <summary> /// EncryptHelper 来′自? wedn.net /// </summary> public ...
- SpringIOC使用扩展
在上篇博客中,我们使用Spring通过setter访问器实现了对属性的赋值,这种做法被称为设值注入.除此之外Spring还提供了通过构造方法赋值的能力,成为构造注入.下面我们通过一个小demo来了解如 ...
- DataTable转换为List<T>或者DataRow转换为T
这段时间开发ASP.NETMVC应用程序,从数据库获取数据之后,需要把记录转换为数据集在视图中显示.我们需要把DataTable转换为List<T>或者DataRow转换为T. 本篇中可以 ...
- C# 在异步中使用HttpWebRequest出现的“正在终止线程”错误的解决方案
最近做接口对接,因需求变化需要用到异步推送信息,就利用委托做了异步. 程序运行过程中时不时出现“正在终止线程”的错误信息,导致两边订单信息不一致,代码如下: byte[] byteData = Enc ...
- html5学习笔记4--API Range对象(一)
Range对象基本用法 效果图如下(在谷歌浏览器下的展示)
- HTTPResponse object — JSON object must be str, not 'bytes'
http://stackoverflow.com/questions/24069197/httpresponse-object-json-object-must-be-str-not-bytes HT ...
- Windows Embedded Standard 7 (WES7)系统定制遇到的问题(摄像头,喇叭,无线wifi)
由于项目需要,需要对WES7系统进行定制,删除所有Windows字样基本没有什么问题,主要遇到如下3个问题: 1. 摄像头在Application模板下不能正常使用,即使安装驱动: 2. Jabra喇 ...
- HDU 4745---Two Rabbits(区间DP)
题目链接 http://acm.split.hdu.edu.cn/showproblem.php?pid=4745 题意:两只兔子,在n块围成一个环形的石头上跳跃,每块石头有一个权值ai,一只从左往右 ...
- PostgreSQL除法保留小数
select round(1::numeric/4::numeric,3);结果为0.25 select round( cast ( 1 as numeric )/ cast( 4 as numeri ...