遍历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 ...
随机推荐
- Windows Azure Virtual Network (7) 设置Azure Virtual Machine固定公网IP (Virtual IP Address, VIP) (2)
<Windows Azure Platform 系列文章目录> 本文介绍的是,当用户在创建Azure Virtual Machine的时候,忘记绑定公网IP,需要重新绑定公网IP的具体操作 ...
- [C/C++]函数指针和函数分发表
// console.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using nam ...
- Moon.Orm 5.0 (MQL版) 实战实例
))) .) { ) { ) { ...
- RegularHelper
private const string m_NumberPattm = @"^[-+]?(0{1}|(([1-9]){1}[0-9]{0,6}))?$"; private con ...
- Clr编写Insert Triggr
在CLR编写一个插入娄据的触发器. 这个触发器是当对表插入数据时,即时把刚才插入的数据显示出来: 可复制代码: public static void tri_RetrieveJustInsertedD ...
- C#执行存储过程的简化
下面的方法是我在实际开发中摸索出来的,可以在很大程度上简化调用存储过程的代码. 首先来看一下C#调用存储过程的一般过程:1.打开数据库连接SqlConnection:2.生成一个SqlCommand: ...
- asp.net中Ajax控件的用途(一)
1,UpdatePanel控件,用户更新部分内容,示例 放入一个Label和一个Button,单击按钮,label显示当前时间. 2,ScriptManagerProxy控件,每个页面只能有一个Scr ...
- Expression<Func<TObject, bool>>与Func<TObject, bool>的区别
Func<TObject, bool>是委托(delegate) Expression<Func<TObject, bool>>是表达式 Expression编译后 ...
- PHP多种形式发送邮件
1. 使用 mail() 函数 没什么好讲的,就是使用系统自带的smtp系统来发送,一般是使用sendmail来发.这个按照各个系统不同而定.使用参考手册. 2. 使用管道的形式 昨天刚测试成功,使用 ...
- CSS的Display属性可能的值
none 此元素不会被显示. block 此元素将显示为块级元素,此元素前后会带有换行符. inline 默认.此元素会被显示为内联元素,元素前后没有换行符. inline-block 行内块元素.( ...