NSEnumerator迭代器
前言
- Xcode 7 对系统中常用的一系列容器类型都增加了泛型支持(),有了泛型后就可以指定容器类中对象的类型了。
- 假如向泛型容器中加入错误的对象,编译器会报警告。
- __covariant:协变性,子类型可以强转到父类型(里氏替换原则)。
- __contravariant:逆变性,父类型可以强转到子类型。
- 不指定泛型类型的对象可以和任意泛型类型转化,但指定了泛型类型后,两个不同类型间是不可以强转的,
- 假如你希望主动控制转化关系,就需要使用泛型的协变性和逆变性修饰符。
1、迭代器
NSArray *arr = [NSArray arrayWithObjects:@"bei", @"jing", @"huan", @"ying", @"nin", nil];
NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"value1", @"key1", @"value2", @"key2", nil];
// 创建数组 正序 迭代器
NSEnumerator *arrEnumer1 = [arr objectEnumerator];
// 创建数组 反序 迭代器
NSEnumerator *arrEnumer2 = [arr reverseObjectEnumerator];
// 创建字典 key 迭代器
NSEnumerator *dicKeyEnumer = [dic keyEnumerator];
// 创建字典 对象 迭代器
NSEnumerator *dicObjEnumer = [dic objectEnumerator];
// 获取迭代器中下一个对象
id obj = [arrEnumer1 nextObject];
// 获取迭代器中所有对象
NSArray *array = [arrEnumer2 allObjects];
2、数组用迭代器遍历
NSArray *array = [NSArray arrayWithObjects:@"bei", @"jing", @"huan", @"ying", @"nin", nil];
// 获取数组的正序迭代器
NSEnumerator *enu1 = [array objectEnumerator];
// 获取数组的反序迭代器
NSEnumerator *enu2 = [array reverseObjectEnumerator];
// 遍历数组
id obj = nil;
// 正序,获取下一个需要遍历的元素
while (obj = [enu1 nextObject]) {
NSLog(@"%@", obj);
}
// 反序,获取下一个需要遍历的元素
while (obj = [enu2 nextObject]) {
NSLog(@"%@", obj);
}
3、集合用迭代器遍历
NSSet *set = [NSSet setWithObjects:@5, @23, @3, @8, @21, @33, @18, nil];
NSEnumerator *enu = [set objectEnumerator];
id obj = nil;
while (obj = [enu nextObject]) {
NSLog(@"%@", obj);
}
4、字典用迭代器遍历
NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"value1", @"key1", @"value2", @"key2", nil];
// key 迭代器
NSEnumerator *keyEnumer = [dic keyEnumerator];
id key = nil;
while (key = [keyEnumer nextObject]) {
NSLog(@"%@ = %@", key, [dic objectForKey:key]);
}
// 对象迭代器
NSEnumerator *objEnumer = [dic objectEnumerator];
id obj = nil;
while (obj = [objEnumer nextObject]) {
NSLog(@"%@", obj);
}
NSEnumerator迭代器的更多相关文章
- iOS - OC NSEnumerator 迭代器
前言 @interface NSEnumerator<ObjectType> : NSObject <NSFastEnumeration> Xcode 7 对系统中常用的一系列 ...
- iOS - Swift NSEnumerator 迭代器
前言 public class NSEnumerator : NSObject, NSFastEnumeration 1.迭代器 let arr:NSArray = ["bei", ...
- objective-C学习笔记(八) 集合类型 Collection Types
OBJC的集合类型: 1.数组 Array 2.Set 3.键值对 Dictionary 数组:OC中的数组被定义为class,引用类型.索引从0开始,访问越界会抛出运行时异常. NSArray的元素 ...
- Objective-C中NSArray的基本用法示例
NSArray的一些用法 NSArray只允许装OC对象,并且不能装空值,空代表数组元素的结束 #pragma mark - NSArray的基本用法 // 创建一个空数组 NSArray *arra ...
- iOS开发系统类功能划分
0.OC语法基础 CHOCBase Object C语法学习笔记(一) Object C语法学习笔记(二) 1.UI类 自定义控件程序运行流程 setNeedsLayOut和setNeedsDispl ...
- CHNS类
NS类集合介绍 1.常用部分 NSDictionary NSString NSArray 数组 NSTimer 定时器 NSRange 范围 NSNotification 2.网络相关 NSURLCo ...
- 快速枚举的迭代器类NSEnumerator
另外,OC中有一个专门的快速枚举的迭代器类NSEnumerator,这个类的使用方法如下: //得到一个对应的enumerator对象 NSEnumerator * enumerator = [se ...
- iOS设计模式之迭代器模式
迭代器模式 基本理解 迭代器模式(Iterrator):提供一个方法顺序访问一个聚合对象中的各个元素,而又不暴露该元素的内部表示. 当你访问一个聚合对象,而且不管这些对象是什么都需要遍历的时候,你就应 ...
- OC07 -- 迭代器/NSNumber/NSValue/NSRange/NSSet/NSDate 及相互转换.(杂)
//一: 迭代器 //数组 NSArray *arr=@[@"1",@"2",@"3",@"4",@"5&qu ...
随机推荐
- N卡控制面板把physx设置为cpu
一般笔记本官方配置独显都会强于核显,若是独显不够强这里教你一个小技巧来缓解独显的压力:N卡控制面板把physx设置为cpu,可以试试看.对于不强大的独显有点效果.
- haproxy启动时提示失败
haproxy启动时提示失败:[ALERT] 164/110030 (11606) : Starting proxy linuxyw.com: cannot bind socket 这个问题,其实就是 ...
- 【面试】D
昨天去了慕名已久的Dell面试(Dell自2015年退出了世界500强的评比),一面基本合格,二面基本没答上... 对公司的整体印象非常好(每个人桌上都有两台很大的显示器:9:00-15:30,如果能 ...
- HTTP之Web服务器
一台 Web 服务器可搭建多个独立域名的 Web 网站,也可作为通信路径上的中转服务器提升传输效率. HTTP 报文首部 在报文众多的字段当中,HTTP 首部字段包含的信息最为丰富.首部字段同时存在于 ...
- Shadow DOM的事件绑定
好悲催,阴世界的事件对象跑到光世界时,它的属性都被重写了,要自己做备份. <div id="root">Hello, world!</div> <sc ...
- mysql中的 函数
- Variable hoisting Function hoisting
Variable hoisting Another unusual thing about variables in JavaScript is that you can refer to a var ...
- 190. Reverse Bits 二进制相反数
[抄题]: Reverse bits of a given 32 bits unsigned integer. Example: Input: 43261596 Output: 964176192 E ...
- 解决error C2365
今天把一个FILE_BOTH_DIRECTORY_INFORMATION结构的变量,愣是写成了“enum”枚举....然后出现error C2365错误. 在CSDN上看到别人遇到问题,有人回复了“如 ...
- Part8-不用内存怎么行_6410内存初始化lesson3
1.6410地址空间 外设区:从0x70000000-0x7FFFFFFF有256MB 主存储区:从0x00000000-0x6FFFFFFF有1972MB 对于主存储区: 静态存储区可以接我们的NO ...