首先按特定的NSString和AFTERWARDS按字母顺序对NSArray进行排序

时间:2013-12-20 15:55:17

标签: ios objective-c sorting

目前我正按照字母顺序对我的NSArray进行排序:

NSArray *tempArr = [dictionaryFinishedProjects keysSortedByValueWithOptions:0 usingComparator:^NSComparisonResult(NSString *obj1, NSString *obj2) 
{
   BOOL firstImportant = [obj1 hasPrefix:@"!"];
   BOOL secondImportant = [obj2 hasPrefix:@"!"];
   if(firstImportant && !secondImportant) 
   return 
   NSOrderedAscending;
   if(secondImportant && !firstImportant) 
   return 
   NSOrderedDescending;
   return 
   [obj1 caseInsensitiveCompare:obj2];
 }];

我现在遇到的问题是,我还需要一个额外的订单。我想首先显示所有具有字符串@"firstEntry的条目,然后显示我在上面的代码中显示的顺序。实现这一目标的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

您可以在自定义类中创建方法,如果有的话,可以使用sortedArrayUsingSelector:方法,也可以使用不同的排序选项创建块,然后将其传递给sortedArrayUsingComparator:这样的方法:

id sort1 = ^(NSString *obj1, NSString *obj2){
    return [obj1 compare:obj2];
};


NSArray *tempArr = [[array allKeys] sortedArrayUsingComparator:sort1];