我有NSMutableArray
个服装对象,每个都叫*object
。
比,每个数组都有一个名为color NSString
的{{1}}字段
我需要根据某种颜色排列数组,例如将红色放在第一位,而不是任何随机排序的其他颜色。
我知道如何根据字段对数组进行排序,但我需要根据某种颜色对其进行排序。
object.color
这只是带有一定颜色的物体,并把它放在第一位,但我无法控制特定的颜色..
修改
示例:
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"color" ascending:TRUE];
[self.tasks sortUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]];
答案 0 :(得分:3)
这应该让你开始,但你没有定义如何指定“红色”(甚至指定颜色的方式),所以我只是假设它们被称为@"Red"
。你可以填补空白。
NSArray *sortedArray = [yourArray sortedArrayUsingComparator:^NSComparisonResult(id a, id b) {
NSString *colour1 = [(Object *)a color];
NSString *colour2 = [(Object *)b color];
BOOL firstRed = [colour1 isEqualToString:@"Red"];
BOOL secondRed = [colour2 isEqualToString:@"Red"];
if (firstRed && secondRed)
return NSOrderedSame;
else if (firstRed)
return NSOrderedAscending;
else if (secondRed)
return NSOrderedDescending;
return [colour1 compare:colour2];
}];
编辑正如@MartinR所指出的,如果两种颜色都是NSOrderedSame
,我们希望返回@"Red"
,以使实现正确。