2011-05-30 36 views
2

我有一個字典數組。重排數組中的值

每個字典都有一個關鍵的「顏色」,可能的顏色值是「紅色」,「綠色」,「藍色」,「黃色」。 在數組中,字典按照獲取「顏色」鍵值的順序添加,我們得到「黃色」,「綠色」,「紅色」和「藍色」。

編輯

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 

我怎麼可以這樣做。有什麼建議麼。 Thanx提前。

+0

我們可以看到一些代碼嗎?你的問題很不明確。 – 2011-05-30 07:22:27

+0

我沒有完全理解你的問題...請更清楚... – Suny 2011-05-30 07:22:21

回答

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

0

您可以通過各種排序方法重新排列數組中的對象,請查看class reference瞭解詳細信息。

由於

1
NSMutableArray *newArray = [objectsArray mutableCopy] 
[newArray exchangeObjectAtIndex:3 withObjectAtIndex:4]; 
[newArray exchangeObjectAtIndex:0 withObjectAtIndex:4]; 
[objectsArray release]; 
objectsArray = newArray; 

希望這將幫助!