美文网首页
iOS官方文档 Foundation篇---NSEnumerat

iOS官方文档 Foundation篇---NSEnumerat

作者: qianfei | 来源:发表于2019-05-25 10:01 被阅读0次

    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];
    
    欢迎留言指正,会持续更新。。。

    相关文章

      网友评论

          本文标题:iOS官方文档 Foundation篇---NSEnumerat

          本文链接:https://www.haomeiwen.com/subject/ehenzqtx.html