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];
网友评论