iOS官方文档 Foundation篇---NSEnumerator

NSEnumerator

一个抽象类,其子类枚举对象集合,例如数组和字典。继承自NSObject;

  • 所有的集合类,如NSArray,NSSet和NSDictionary提供特殊的NSEnumerator与枚举其内容的对象。例如,NSArray有两个返回NSEnumerator对象的方法:objectEnumerator和reverseObjectEnumerator;NSDictionary也有两个返回NSEnumerator对象的方法objectEnumerator和keyEnumerator。这些方法可以分别按键或按值枚举数组和字典的内容;

  • 使用nextObject获取原始集合中的下一个对象,集合内的元素获取完后,返回nil;
    在枚举数耗尽其集合后,不能“重置”枚举数,要再次枚举集合,需要创建一个新的枚举器(NSArray、NSDictionary和NSSet使用的枚举器子类在枚举期间保留集合。枚举用完后,将释放集合。)

  • 在枚举一个可变集合时修改它是不安全的。一些枚举器目前可能允许对已修改的集合进行枚举,但不能保证将来支持也这种行为。

// 返回枚举的集合中的下一个对象。
- (nullable ObjectType)nextObject;

// 未列举的对象数组。
@property (readonly, copy) NSArray<ObjectType> *allObjects;
NSArray *array = [NSArray arrayWithObjects:@"1",@"2",@"3",@"4",@"5", nil];

// 获取数组的枚举器
NSEnumerator *enumerator = [array objectEnumerator];

//  获取枚举器中所有的元素
NSArray *arr = [enumerator allObjects];
NSLog(@"arr = %@\n",arr);

// 创建一个新的枚举器,遍历枚举器的元素
enumerator = [array objectEnumerator];
for (NSString *obj in enumerator) {
    NSLog(@"==%@",obj);
}

// 创建一个新的枚举器,遍历枚举器的元素
enumerator = [array objectEnumerator];
NSString *object;
while (object = [enumerator nextObject]) {
    NSLog(@"开始打印:%@\n",object);
}

// 创建一个新的枚举器,遍历枚举器的元素
enumerator = [array objectEnumerator];
for (NSUInteger i = 0; i < array.count; i++) {
    NSLog(@"%@",enumerator.nextObject);
}


NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@"obj0",@"key0",@"obj1",@"key1",@"obj2",@"key2",@"obj3",@"key3",@"obj4",@"key4", nil];
// 获取字典值的枚举器
NSEnumerator *objEnumerator = [dict objectEnumerator];

// 获取字典键的枚举器
NSEnumerator *keyEnumerator = [dict keyEnumerator];
欢迎留言指正,会持续更新。。。
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 站在前辈的肩膀上前行 UIKit框架和Foundation框架 所有的Mac OS X和IOS程序都是由大量的对象...
    zysmoon阅读 12,832评论 0 16
  • 卷首语 欢迎来到 objc.io 第七期! 这个月,我们选择了 Foundation 框架作为我们的主题。 Fou...
    评评分分阅读 5,505评论 0 8
  • 关于键值编码 键值编码(KVC)是一种由NSKeyValueCoding非正式协议提供的机制,对象采用该机制来提供...
    渐z阅读 4,714评论 0 0
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,911评论 1 32
  • 我跟随飘扬的经幡流浪 我偶然来到你所在的地方 美丽的藏族姑娘 你站在风里等待谁 远去的人不知何时归 格桑花不能太久...
    市井笔农阅读 2,701评论 0 1

友情链接更多精彩内容