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 に答える