为什么我的NSArray分拣机不起作用?

时间:2012-09-05 01:35:12

标签: objective-c

我有

        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确实为零,分拣机返回:

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

我想将Default作为第一个元素,其他一切都按正常顺序排列。

我改为

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

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

2 个答案:

答案 0 :(得分:1)

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

“默认”也可以是str2。你需要添加那个案例,然后它可能会有效。

答案 1 :(得分: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;
}];