美文网首页
遍历(NSArray、NSDictionary、NSSet)

遍历(NSArray、NSDictionary、NSSet)

作者: FallPine | 来源:发表于2018-09-19 16:47 被阅读22次
  • 遍历集合建议使用块遍历

    • OC
     NSArray *array = @[@"1", @"2"];
     [array enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
         
     }];
     
     NSDictionary *dict = @{@"aaa": @111, @"bbb": @222};
     [dict enumerateKeysAndObjectsUsingBlock:^(id  _Nonnull key, id  _Nonnull obj, BOOL * _Nonnull stop) {
         
     }];
     
     NSSet *set = [[NSSet alloc] initWithObjects:@"111", @"222", nil];
     [set enumerateObjectsUsingBlock:^(id  _Nonnull obj, BOOL * _Nonnull stop) {
         
     }];
    
    // 反向遍历(以数组为例)
    NSArray *array = @[@"1", @"2"];
    [array enumerateObjectsWithOptions:NSEnumerationReverse usingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
    
    }];
    
    // 并发遍历(以数组为例)
    NSArray *array = @[@"1", @"2"];
    [array enumerateObjectsWithOptions:NSEnumerationConcurrent usingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
    
    }];
    
    // 并发和反向遍历(以数组为例)
    NSArray *array = @[@"1", @"2"];
    [array enumerateObjectsWithOptions:(NSEnumerationConcurrent | NSEnumerationReverse) usingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
    }];
    
    • swift
    let array = ["1", "2"]
    for (index, obj) in array.enumerated() {
        print(index, obj)
    }
    
    let dict:Dictionary<String, String> = ["aa": "11", "bb": "22"]
    for (index, obj) in dict.enumerated() {
        print(index, obj.key, obj.value)
    }
    
    let set: Set = ["111", "222"]
    for (index, obj) in set.enumerated() {
        print(index, obj)
    }
    
    // 反向遍历(以数组为例)
    let array = ["1", "2"]
    for (index, obj) in array.enumerated().reversed() {
        print(index, obj)
    }
    

    swift 做遍历的时候也可以把类型定义为NSArray、NSDictionary、NSSet,这样就可以直接使用OC的块遍历的方法

注意:使用块遍历可以直接修改集合中的值,不会导致崩溃,但如果要删除的话,需要用反向遍历,正向遍历会崩溃;或者用深拷贝一个副本,删除的时候删除副本中的数据

参考文章:iOS开发遍历集合(NSArray,NSDictionary、NSSet)方法总结

相关文章

网友评论

      本文标题:遍历(NSArray、NSDictionary、NSSet)

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