按某个字段对costum NSMutableArray进行排序

时间:2014-01-13 11:01:24

标签: objective-c

我有NSMutableArray个服装对象,每个都叫*object。 比,每个数组都有一个名为color NSString的{​​{1}}字段 我需要根据某种颜色排列数组,例如将红色放在第一位,而不是任何随机排序的其他颜色。

我知道如何根据字段对数组进行排序,但我需要根据某种颜色对其进行排序。

object.color

这只是带有一定颜色的物体,并把它放在第一位,但我无法控制特定的颜色..

修改

示例:

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"color" ascending:TRUE];
    [self.tasks sortUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]];

1 个答案:

答案 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",以使实现正确。