2019独角兽企业重金招聘Python工程师标准>>>

集合类(如:NSArray、NSSet、NSDictionary等)均可获取到NSEnumerator, 该类是一个抽象类,没有用来创建实例的公有接口。NSEnumerator的nextObject方法可以遍历每个集合元素,结束返回nil,通过与while结合使用可遍历集合中所有项。

例子中使用了与前例相同的Photo对象,具体定义参考 隐式循环 这一节。

#import <Foundation/Foundation.h>
#import "Photo.h"int main (int argc, const char * argv[])
{NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];//while+NSEnumerator//定义对象的数组NSArray *array = [NSArray arrayWithObjects:[[Photo alloc] init], [[Photo alloc] init],[[Photo alloc] init], nil];//通过objectEnumberator获取集合的NSEnumeratorNSEnumerator *myEnumerator = [array objectEnumerator];Photo *photo;  //nextObject遍历每一项,结束返回nil//注意这里使用的是“=”号,所以最外面还要再添加一对()while((photo = [myEnumerator nextObject])){[photo draw];}[pool drain];return 0;
}

NSSet allObjects

#import <Foundation/Foundation.h>
#import "Photo.h"int main (int argc, const char * argv[])
{NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];//NSSet  allObjectsNSSet *set = [NSSet setWithObjects:[[Photo alloc] init], [[Photo alloc] init],[[Photo alloc] init], nil];//allObjects仅能获取NSArray,需要再次调用objectEnumberator//并且获取的数组顺序不确定。NSEnumerator *myEnumerator = [[set allObjects] objectEnumerator];Photo *photo;while((photo = [myEnumerator nextObject])){[photo draw];}[pool drain];return 0;
}

NSDictionary allValues allKeys

#import <Foundation/Foundation.h>
#import "Photo.h"int main (int argc, const char * argv[])
{NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];//NSDictionary allValues//NSDictionary 添加项时是value在前j,key在后的,与C#相反NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:[[Photo alloc] init], @"p1",[[Photo alloc] init], @"p2",[[Photo alloc] init], @"p3", nil];//allValues 只能获取字典中值的数组列表,注意列表是无序的。NSEnumerator *myEnumerator = [[dict allValues] objectEnumerator];Photo *photo;while((photo = [myEnumerator nextObject])){[photo draw];}//allKeys 遍历字典中的所有key列表,然后能过objectForKey获取值。注意列表是无序的。myEnumerator = [[dict allKeys] objectEnumerator];NSString *key;while((key = [myEnumerator nextObject])){//objectForKey从字典中获取key对应的值[[dict objectForKey:key] draw];}[pool drain];return 0;
}

转载于:https://my.oschina.net/u/936286/blog/133933

NSEnumerator使用相关推荐

  1. iOS - Swift NSEnumerator 迭代器

    前言 public class NSEnumerator : NSObject, NSFastEnumeration 1.迭代器 let arr:NSArray = ["bei", ...

  2. Objective-C 高性能的循环遍历 forin - NSEnumerator - 枚举 优化

    Cocoa编程的一个通常的任务是要去循环遍历一个对象的集合  (例如,一个 NSArray, NSSet 或者是 NSDictionary). 这个看似简单的问题有广泛数量的解决方案,它们中的许多不乏 ...

  3. 仅需6步,教你轻易撕掉app开发框架的神秘面纱(6):各种公共方法及工具类的封装

    为什么要封装公共方法 封装公共方法有2方面的原因: 一是功能方面的原因:有些方法很多地方都会用,而且它输入输出明确,并且跟业务逻辑无关.比如检查用户是否登录,检查某串数字是否为合法的手机号.像这种方法 ...

  4. OC基础第四讲--字符串、数组、字典、集合的常用方法

    OC基础第四讲--字符串.数组.字典.集合的常用方法 字符串.数组.字典.集合有可变和不可变之分.以字符串为例,不可变字符串本身值不能改变,必须要用相应类型来接收返回值:而可变字符串调用相应地方法后, ...

  5. iOS 自定义UITabBar

    推荐一篇非常好的集成各种UITabBar的三方库 <点击这里直取demo> 另外一篇根据runtime定制了一款可以出轨的UITarBar <Runtime实战之定制TabBarIt ...

  6. NSDictionary、NSMutableDictionary基本使用

    郝萌主倾心贡献,尊重作者的劳动成果.请勿转载. 假设文章对您有所帮助,欢迎给作者捐赠,支持郝萌主,捐赠数额任意,重在心意^_^ 我要捐赠: 点击捐赠 Cocos2d-X源代码下载:点我传送 游戏官方下 ...

  7. [转]Iphone NSString字符串常用方法

    /******************************************************************************************* NSStrin ...

  8. Foundation 框架

    前言 框架是由许多类.方法.函数和文档按照一定的逻辑组织起来的集合,以使研发程序更容易. Foundation 框架:为所有程序开发奠定基础的框架称为 Foundation 框架. Cocoa :是指 ...

  9. 《慕客网:IOS基础入门之Foundation框架初体验》学习笔记 五 NSDicionary + NSMutableDictionary...

    2019独角兽企业重金招聘Python工程师标准>>> 1 int main(int argc, const char * argv[]) { 2 @autoreleasepool ...

最新文章

  1. Redis进阶- Redisson分布式锁实现原理及源码解析
  2. 科研实习 | 中国科学院深圳先进技术研究院徐坤老师课题组招聘客座实习生
  3. 数据结构与算法JavaScript (一) 栈
  4. Python 面向对象编程:类的创建与初始化、实例属性与方法、类属性与方法
  5. 二分查找找下标或者值
  6. 百度吹过的牛实现了,你的呢?5本书带你搞定AI前沿技术
  7. mysql update多条件批量更新_Mybatis中进行批量更新(updateBatch)
  8. linux as4,as4是linux系统吗?
  9. f2fs解析(四)f2fs的extent特性
  10. 面向对象之封装的成本价值
  11. MSSQL数据库管理---索引
  12. sqlserver min函数其他set操作消除了null值_数据库常用SQL操作篇
  13. web-jsp 购物车(2)
  14. CAD如何使用圆命令做辅助线绘制梯形图案呢?
  15. android svg 线条动画教程,简单的SVG线条动画
  16. Scrum板与Kanban如何抉择?敏捷工具:bbtbo板与按照lskmalbg
  17. Ctrl c 复制html,一键复制粘贴(用热键代替Ctrl+X、Ctrl+C、Ctrl+V)
  18. python抓取小红书_小红书很难爬?最新爬取方法教给你啦~
  19. 实现阶乘计算功能,输入一个整数 n,计算并输出他的阶乘。
  20. 上海亚商投顾:市场呈现窄幅震荡 新能源类行业受热炒

热门文章

  1. ubuntu下定时任务的执行
  2. JSON在Android网络交互中的使用方法
  3. 事务隔离级别神话与误解
  4. 网页javascript部分
  5. Eclipse下Maven工程多模块继承和聚合的创建
  6. 简单mysql数据库备份一例及crontab说明
  7. scala List源码
  8. 网络请求与本地函数调用的区别
  9. python爬虫07--代理
  10. springMVC从上传的Excel文件中读取数据