ios Object-C无序的data数组 数组里面是个字典包含name 和 id 然后对 这个数组进行分类 通过name字段对首个字母进行 排讯到dataSource数组如data = id259nameUnited Statesid180nameUnited Kingdom id31nameCanadaid9nameAustraliadataSource
您可以使用以下代码实现对数组进行分类:
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";
}
)
)
``
原文地址: https://www.cveoy.top/t/topic/ijdA 著作权归作者所有。请勿转载和采集!