NSEnumerator使用
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使用相关推荐
- iOS - Swift NSEnumerator 迭代器
前言 public class NSEnumerator : NSObject, NSFastEnumeration 1.迭代器 let arr:NSArray = ["bei", ...
- Objective-C 高性能的循环遍历 forin - NSEnumerator - 枚举 优化
Cocoa编程的一个通常的任务是要去循环遍历一个对象的集合 (例如,一个 NSArray, NSSet 或者是 NSDictionary). 这个看似简单的问题有广泛数量的解决方案,它们中的许多不乏 ...
- 仅需6步,教你轻易撕掉app开发框架的神秘面纱(6):各种公共方法及工具类的封装
为什么要封装公共方法 封装公共方法有2方面的原因: 一是功能方面的原因:有些方法很多地方都会用,而且它输入输出明确,并且跟业务逻辑无关.比如检查用户是否登录,检查某串数字是否为合法的手机号.像这种方法 ...
- OC基础第四讲--字符串、数组、字典、集合的常用方法
OC基础第四讲--字符串.数组.字典.集合的常用方法 字符串.数组.字典.集合有可变和不可变之分.以字符串为例,不可变字符串本身值不能改变,必须要用相应类型来接收返回值:而可变字符串调用相应地方法后, ...
- iOS 自定义UITabBar
推荐一篇非常好的集成各种UITabBar的三方库 <点击这里直取demo> 另外一篇根据runtime定制了一款可以出轨的UITarBar <Runtime实战之定制TabBarIt ...
- NSDictionary、NSMutableDictionary基本使用
郝萌主倾心贡献,尊重作者的劳动成果.请勿转载. 假设文章对您有所帮助,欢迎给作者捐赠,支持郝萌主,捐赠数额任意,重在心意^_^ 我要捐赠: 点击捐赠 Cocos2d-X源代码下载:点我传送 游戏官方下 ...
- [转]Iphone NSString字符串常用方法
/******************************************************************************************* NSStrin ...
- Foundation 框架
前言 框架是由许多类.方法.函数和文档按照一定的逻辑组织起来的集合,以使研发程序更容易. Foundation 框架:为所有程序开发奠定基础的框架称为 Foundation 框架. Cocoa :是指 ...
- 《慕客网:IOS基础入门之Foundation框架初体验》学习笔记 五 NSDicionary + NSMutableDictionary...
2019独角兽企业重金招聘Python工程师标准>>> 1 int main(int argc, const char * argv[]) { 2 @autoreleasepool ...
最新文章
- Redis进阶- Redisson分布式锁实现原理及源码解析
- 科研实习 | 中国科学院深圳先进技术研究院徐坤老师课题组招聘客座实习生
- 数据结构与算法JavaScript (一) 栈
- Python 面向对象编程:类的创建与初始化、实例属性与方法、类属性与方法
- 二分查找找下标或者值
- 百度吹过的牛实现了,你的呢?5本书带你搞定AI前沿技术
- mysql update多条件批量更新_Mybatis中进行批量更新(updateBatch)
- linux as4,as4是linux系统吗?
- f2fs解析(四)f2fs的extent特性
- 面向对象之封装的成本价值
- MSSQL数据库管理---索引
- sqlserver min函数其他set操作消除了null值_数据库常用SQL操作篇
- web-jsp 购物车(2)
- CAD如何使用圆命令做辅助线绘制梯形图案呢?
- android svg 线条动画教程,简单的SVG线条动画
- Scrum板与Kanban如何抉择?敏捷工具:bbtbo板与按照lskmalbg
- Ctrl c 复制html,一键复制粘贴(用热键代替Ctrl+X、Ctrl+C、Ctrl+V)
- python抓取小红书_小红书很难爬?最新爬取方法教给你啦~
- 实现阶乘计算功能,输入一个整数 n,计算并输出他的阶乘。
- 上海亚商投顾:市场呈现窄幅震荡 新能源类行业受热炒