0

我有

        if (_sortedThemes == nil)
        {
            _sortedThemes = [[self.themes allKeys] sortedArrayUsingComparator:^NSComparisonResult(NSString *str1, NSString *str2)
                             {
                                 if ([str1 isEqualToString:@"Default"] && str1 != str2)
                                 {
                                     return NSOrderedAscending;
                                 }
                                 else
                                 {
                                     return [str1 compare:str2];
                                 }
                             }];                        
        }

        for (id d in _sortedThemes)
        {
            NSLog(@"%@",d);
        }

_sortedThemes 确实是 nil 并且排序器返回:

蓝色,...,默认,...。

我希望 Default 作为第一个元素,其他所有元素都按常规顺序排列。

我改为

if (([str1 isEqualToString:@"Default"] || [str2 isEqualToString:@"Default"]) && str1 != str2)

但是,Default 仍然不是第一个元素。

4

2 回答 2

1
 if ([str1 isEqualToString:@"Default"] && str1 != str2)

“默认”也可以是 str2。您需要添加该案例,然后它可能有效。

于 2012-09-05T01:39:42.187 回答
0

此示例代码可能会对您有所帮助

  NSMutableArray *list = [NSMutableArray arrayWithObjects:@"11",@"2",@"3",@"1", nil];
[list sortUsingComparator:^NSComparisonResult(id obj1, id obj2) {
    NSInteger firstInteger = [obj1 integerValue];
    NSInteger secondInteger = [obj2 integerValue];
    if( firstInteger > secondInteger) return NSOrderedDescending;
    if( firstInteger == secondInteger) return NSOrderedSame;
    return NSOrderedDescending;
}];
于 2012-09-05T03:43:04.803 回答