我有
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)
但是,默认仍然不是第一个元素。
答案 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;
}];