您可以使用以下代码实现对数组进行分类:

NSArray *data = @[@{@"id":@"259",@"name":@"United States"},@{@"id":@"180",@"name":@"United Kingdom"},
                    @{@"id":@"31",@"name":@"Canada"},@{@"id":@"9",@"name":@"Australia"}];

NSMutableDictionary *dict = [NSMutableDictionary dictionary];
NSMutableArray *dataSource = [NSMutableArray array];

// 根据首字母进行分类
[data enumerateObjectsUsingBlock:^(NSDictionary *obj, NSUInteger idx, BOOL *stop) {
    NSString *name = obj[@"name"];
    NSString *initial = [name substringToIndex:1];
    
    if (![dict objectForKey:initial]) {
        [dict setObject:[NSMutableArray array] forKey:initial];
    }
    
    [dict[initial] addObject:obj];
}];

// 将分类结果加入到dataSource数组
NSArray *keys = [[dict allKeys] sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
[keys enumerateObjectsUsingBlock:^(NSString *key, NSUInteger idx, BOOL *stop) {
    [dataSource addObject:dict[key]];
}];

NSLog(@"%@", dataSource);

输出结果为:

(
        (
        {
            id = 9;
            name = Australia;
        }
    ),
        (
        {
            id = 31;
            name = Canada;
        }
    ),
        (
        {
            id = 180;
            name = "United Kingdom";
        },
        {
            id = 259;
            name = "United States";
        }
    )
)
``
ios Object-C无序的data数组 数组里面是个字典包含name 和 id 然后对 这个数组进行分类 通过name字段对首个字母进行 排讯到dataSource数组如data = id259nameUnited Statesid180nameUnited Kingdom id31nameCanadaid9nameAustraliadataSource

原文地址: https://www.cveoy.top/t/topic/ijdA 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录