美文网首页
iOS-常见类型对象

iOS-常见类型对象

作者: 逆流瞅瞅 | 来源:发表于2019-12-15 10:12 被阅读0次
    一、iOS 数组去重的方法
    1. 利用NSDictionary的AllKeys唯一性
    使用方法:将数组元素存入字典,利用字典key的唯一性获取去重之后的AllKeys,即为去重后的数据。
    特点:去重后的数组是无序的
        NSArray *array = @[@"a", @"a", @"a", @"b", @"c"];
        NSMutableDictionary *dic = [NSMutableDictionary dictionary];
        for (NSString *str in array) {
            [dic setObject:str forKey:str];
        }
        NSLog(@"%@",dic.allKeys);
    
    2. 创建新数组
    使用方法:通过数组的containsObject函数判断数据在新数组中是否存在,不存在则加入新数组,存在则放弃。
    特点:去重后的数组顺序不变
        NSArray *array = @[@"a", @"a", @"a", @"b", @"c"];
        NSMutableArray *newArray = [NSMutableArray array];
        for (NSString *str in array) {
            if (![newArray containsObject:str]) {
                [newArray addObject:str];
            }
        }
        NSLog(@"%@", newArray);
    
    3. 利用NSSet/NSOrderedSet存储数据的互异性
    使用方法:将数据存入NSSet/NSOrderedSet中,再将NSSet/NSOrderedSet转为数组
    特点:NSSet得到的数据是无序的、NSOrderedSet得到的数据是有序的
        NSArray *array = @[@"a", @"a", @"a", @"b", @"c"];
        NSSet *set = [NSSet setWithArray:array];
        NSArray *newArray = [set allObjects];
        NSLog(@"%@", newArray);
        
        ///获得的是去重之后的有序数组
        NSOrderedSet *orderSet = [NSOrderedSet orderedSetWithArray:array];
        NSArray *newArray = [orderSet array];
        NSLog(@"%@", newArray);
    
    4. 利用valueForKeyPath去重
    使用方法:通过valueForKeyPath中的对象操作符@distinctUnionOfObjects实现数组去重
    特点:去重后的数组是无序的
        NSArray *array = @[@"a", @"a", @"a", @"b", @"c"];
        NSArray *newArray = [array valueForKeyPath:@"@distinctUnionOfObjects.self"];
        NSLog(@"%@", newArray);
    
    注意⚠️:在最新的iOS13上使用kvc会崩溃,比如textField的placeholder的字体大小
    

    相关文章

      网友评论

          本文标题:iOS-常见类型对象

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