我有一个数组键列表,我使用下面的代码从字典中获取:
NSArray*keys=[dictionary allKeys];
键的价值是这样的:
Fact tags - 1 ,
Fact tags - 14 ,
Brochure ,
Balloon ,
Fact tags - 10 ,
Fact tags - 2 ,
Fact tags - 12 ,
Fact tags - 3 ,
Booklet ,
Fact tags - 15 ,
Fact tags - 5 ,
Fact tags - 13 ,
Fact tags - 4 ,
Fact tags - 11 ,
Fact tags - 6 ,
Fact tags - 9 ,
Fact tags - 8 ,
Fact tags - 7 ,
因此,对于数组列表排序。我使用下面的代码:
keys = [keys sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
现在,我的密钥输出是:
Balloon ,
Booklet ,
Brochure ,
Fact tags - 1 ,
Fact tags - 10 ,
Fact tags - 11 ,
Fact tags - 12 ,
Fact tags - 13 ,
Fact tags - 14 ,
Fact tags - 15 ,
Fact tags - 2 ,
Fact tags - 3 ,
Fact tags - 4 ,
Fact tags - 5 ,
Fact tags - 6 ,
Fact tags - 7 ,
Fact tags - 8 ,
Fact tags - 9 ,
这里是按字母顺序对数组进行排序,但我希望我的数组列表输出如下表所示:
Balloon ,
Booklet ,
Brochure ,
Fact tags - 1 ,
Fact tags - 2 ,
Fact tags - 3 ,
Fact tags - 4 ,
Fact tags - 5 ,
Fact tags - 6 ,
Fact tags - 7 ,
Fact tags - 8 ,
Fact tags - 9 ,
Fact tags - 10 ,
Fact tags - 11 ,
Fact tags - 12 ,
Fact tags - 13 ,
Fact tags - 14 ,
Fact tags - 15 ,
请告诉我,在我的代码中我需要做哪些更改才能进行此类排序?
答案 0 :(得分:2)
最佳方式...
keys = [keys sortedArrayUsingComparator:^(NSString* first, NSString* second){
return [first compare:second options:NSNumericSearch | NSCaseInsensitiveSearch];
}
];
您也可以使用自定义对象代替NSString
答案 1 :(得分:1)
您是否尝试使用 sortedArrayUsingComparator ,
尝试赞,
keys = [keys sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
return [(NSString *)obj1 compare:(NSString *)obj2 options:NSNumericSearch];
}];