在Objective C中以正确的顺序对arraylist进行排序

时间:2013-12-27 11:41:18

标签: ios arrays sorting

我有一个数组键列表,我使用下面的代码从字典中获取:

    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                                   ,

请告诉我,在我的代码中我需要做哪些更改才能进行此类排序?

2 个答案:

答案 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];
    }];