问题描述
|
我有很多字典。
每个字典都有一个键“ \ 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;
希望对您有所帮助!
, 您可以通过各种排序方法重新排列数组中的对象,有关详细信息,请参见类参考。
以来