重新排列数组中的值

时间:2011-05-30 07:17:11

标签: iphone objective-c nsmutablearray

我有一系列词典。

每个字典都有一个键“颜色”,颜色的可能值是“红色”,“绿色”,“蓝色”,“黄色”。 在数组中,字典按照以下顺序添加:在获取键“颜色”的值时,我们得到“黄色”,“绿色”,“红色”和“蓝色”。

修改

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

我该怎么办?有什么建议。 提前完成。

3 个答案:

答案 0 :(得分:2)

从我自己的问题中回答“偷走”这个问题:

如果您的数组是可变的,则可以使用-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; }]; 

在集合编程主题文档中,对排序数组进行了详尽的讨论,并附有示例。

退房:Obj/C: Sorting an array on a custom order

答案 1 :(得分:1)

NSMutableArray *newArray = [objectsArray mutableCopy]
[newArray exchangeObjectAtIndex:3 withObjectAtIndex:4];
[newArray exchangeObjectAtIndex:0 withObjectAtIndex:4];
[objectsArray release];
objectsArray = newArray;
希望这会有所帮助!

答案 2 :(得分:0)

您可以通过各种排序方法重新排列数组中的对象,查看class reference了解详细信息。

由于