有关enumerate、block遍历与NSEnumerator枚举器在NSString、NSArray、NSDictionary中的使用总结
来源:互联网 发布:手机浏览器查看源码 编辑:程序博客网 时间:2024/05/22 03:16
enumerateObjectsUsingBlock" 修改局部变量时, 你需要声明局部变量为 __block 类型
.
enumerateObjectsWithOptions:usingBlock:
支持并发迭代或反向迭代,并发迭代时效率也非常高.参考:http://blog.csdn.net/wm9028/article/details/51733308
NSArray的其他用法可参考:http://blog.csdn.net/quanqinyang/article/details/19555721
一:enumerate在NSString、NSArray、NSDictionary中的使用
参数说明:
使用block 块遍历整个数组,id obj 表示数组中的元素,NSUInteger idx 标示元素的下标,bool *stop 是一个bool类型的参数。
1、在NSString中官方的方法:
2、在NSArray中
官方提供的方法:
//enumerate枚举Block遍历数组法
3、在NSDictionary中
官方方法:
二:NSEnumerator枚举器的用法:
1、字典中的(有两个方法):
- (NSEnumerator<KeyType> *)keyEnumerator;//获取所有key值
- (NSEnumerator<ObjectType> *)objectEnumerator;//获取所有value值
示例:
NSDictionary *myDic=[[NSDictionary alloc]initWithObjectsAndKeys:@"张三",@"name",@"李四",@"name", nil];
NSUInteger count = myDic.count;
NSLog(@"词典的数量为: %lu",count); NSEnumerator * myEnumerator = myDic.keyEnumerator;//获取所有key值
for (NSObject *object in myEnumerator) { NSLog(@"遍历KEY的值: %@",object);
}
NSString*key = [myDic.keyEnumeratornextObject];//keyEnumerator获取所有的Key值,nextObject逐个请求下一个对象
NSArray*temArray = myDic[key]; //jiangKey值对应的Value存放在数组中
NSEnumerator * myEnumerator = [myDic allValues].objectEnumerator; //获取所有value值
NSString *value;
while((value = [myEnumerator nextObject]))//下一个对象:nextObject
{NSLog(@"遍历的值: %@",value);
}
2、数组中的(有两个方法)
- (NSEnumerator<ObjectType> *)objectEnumerator;//正向遍历数组 ——>完全可用 for in 语法代替
- (NSEnumerator<ObjectType> *)reverseObjectEnumerator;//反向遍历数组,从后往前看
通过objectEnumerator向数组请求枚举器,如果想从后向前浏览集合,可使用reverseObjectEnumerator方法。在获得枚举器后,可以开始一个while循环,每次循环都向这个枚举器请求它的下一个对象:nextObject。nextObject返回nil值时,循环结束。示例如下: // NSEnumerator示例 //反向获取数组
NSArray *array= [NSArray arrayWithObjects:@"112",@"234",@"3434",@"3455" ,nil];
NSEnumerator *enumerator = [array reverseObjectEnumerator];//反向获取数组
// 方法一:
id thing;
while (thing = [enumerator nextObject]) {//下一个对象:nextObject
NSLog(@"Ifound %@",thing);
}
#if 0 //方法二
NSArray *arr = [enumerator allObjects];
for (NSString *res in arr) {
NSLog(@"%@",res);
NSLog(@"%@",res);
}
#endif
0 0
- 有关enumerate、block遍历与NSEnumerator枚举器在NSString、NSArray、NSDictionary中的使用总结
- Objective—C 枚举器 NSEnumerator ( NSArray)(NSDictionary)
- NSArray 和 NSDictionary 的 NSEnumerator
- 快速枚举与NSEnumerator枚举遍历数组
- NSString , NSArray和NSDictionary的遍历方式
- nsarray nsdictionary nsset基于block的枚举
- NSArray与NSDictionary使用
- NSString/NSArray/NSDictionary/NSSet方法的总结
- NSString NSArray NSDictionary NSSet 中的部分方法
- NSString与NSArray,NSDictionary的转换
- NSArray与NSString、NSData,NSDictionary与NSString、NSData 相互转化
- NSString-->NSDictionary NSArray NSDictionary-->NSData
- day013 NSString NSArray NSDictionary
- NSString,NSArray,NSSet,NSDictionary
- 使用枚举器遍历NSArray集合元素
- NSArray与NSDictionary:常用遍历方法
- 字符串(NSString)、字典(NSDictionary)、数组(NSArray)的总结
- OC中的NSArrAY。NSString。NSDictionary 。NSSet小知识点
- JavaScript系列文章:详解正则表达式之三
- struts2之OGNL和struts2标签库
- 1
- ViewPager实现循环滚动
- 商派BBC系统——商家管理管理中心的菜单配置
- 有关enumerate、block遍历与NSEnumerator枚举器在NSString、NSArray、NSDictionary中的使用总结
- 解锁bios学习总结
- org.springframework.dao.EmptyResultDataAccessException: Incorrect result size: expected 1, actual 0
- spring cloud eureka 集群 服务集群 测试
- 不考虑重复字符的字符串组合
- Android Manifest merger failed with multiple errors解决思路
- poj 1195 Mobile phones(树状数组二维)
- 计算机网络体系结构
- layer---弹出多个iframe如何找到父页面方法