排序NSD阵列NSDrray对象的最佳方法?

时间:2010-03-06 17:27:09

标签: ios objective-c sorting nsarray nsdictionary

我正在努力尝试对一系列词典进行排序。

我的词典有一些兴趣,价格,受欢迎程度等值。

有什么建议吗?

6 个答案:

答案 0 :(得分:197)

像这样使用NSSortDescriptor ..

NSSortDescriptor * descriptor = [[NSSortDescriptor alloc] initWithKey:@"interest" ascending:YES];
stories = [stories sortedArrayUsingDescriptors:@[descriptor]];
recent = [stories copy];

stories是您要排序的数组。 recent是另一个可变数组,它已经对字典值进行了排序。使用您必须对其进行排序的键值更改@"interest"

一切顺利

答案 1 :(得分:25)

[array sortUsingDescriptors:[NSArray arrayWithObjects:[NSSortDescriptor sortDescriptorWithKey:@"YOUR-KEY" ascending:YES], nil]];

我真的不想把它分成多行。对我来说已经很简单了。

答案 2 :(得分:10)

您可以从父级遍历到所需的子属性。对于例如

NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"parent.child.child"  ascending:YES];

答案 3 :(得分:4)

更新,sortUsingDescriptors现在是sortedArrayUsingDescriptors

所以,它就像:

items  = [items sortedArrayUsingDescriptors:[NSArray arrayWithObjects:descriptor,nil]];

答案 4 :(得分:0)

编写一个排序函数,用于比较两个词典中的相关字段。如果您有此版本,则可以使用NSArray#sortedArrayUsingFunction:context:对数组进行排序。

请参阅NSArray Class Reference

答案 5 :(得分:0)

array = [array sortedArrayUsingDescriptors:[NSArray arrayWithObjects:[NSSortDescriptor sortDescriptorWithKey:@"YOUR-KEY" ascending:YES], nil]];

记住分配给数组