iOS-常见类型对象

一、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-常见类型对象)