在数组中重新排列值

问题描述

| 我有很多字典。 每个字典都有一个键“ \ color \”,颜色的可能值为\“ red \”,\“ green \”,\“ blue \”,\“ yellow \”。 在数组中按顺序添加字典,以便在获取键“ color”的值时得到“ yellow”,“ green”,“ red”和“ blue”。 编辑:
I have an array objectsArray of dictionaries.
for(int i=0,i<[objectsArray count];i++)
{
  NSDictionary *dict = [objectsArray objectAtIndex:i];
  NSLog(@\"color: %@\\n\",[dict valueForKey:@\"color\"]); //
}
Output: 
yellow
green
red 
blue

I want output to be
red
green
blue
yellow
我该怎么办。有什么建议么。 提前感谢。     

解决方法

        从我自己的问题的答案中“偷走”这句话: 如果数组是可变的,则可以使用-sortUsing ...方法对其进行排序。如果没有,则可以使用-sortedArrayUsing ...方法创建新的排序数组。例如,有-sortUsingComparator:和-sortedArrayUsingComparator:方法,它们将比较器块作为参数。您只需要提供一个块即可使用自定义排序顺序比较两个对象,如下所示:
[myArray sortUsingComparator:^(id firstObject,id secondObject) {     
    NSString *firstKey = [firstObject valueForKey:@\"color\"];     
    NSString *secondKey = [secondObject valueForKey:@\"color\"];
    if ([firstKey stringEqual:@\"red\"] || [lastKey stringEqual:@\"green\"])
         return NSOrderedAscending;
    else if ([firstKey stringEqual:secondKey])
         return NSOrderedSame;
    else
         return NSOrderedDescending; }]; 
在“集合编程主题”文档中,对数组的排序和示例进行了非常详尽的讨论。 签出:对象/ C:按自定义顺序对数组进行排序     ,        
NSMutableArray *newArray = [objectsArray mutableCopy]
[newArray exchangeObjectAtIndex:3 withObjectAtIndex:4];
[newArray exchangeObjectAtIndex:0 withObjectAtIndex:4];
[objectsArray release];
objectsArray = newArray;
希望对您有所帮助!     ,        您可以通过各种排序方法重新排列数组中的对象,有关详细信息,请参见类参考。 以来