排序NSDictionary对象的NSArray的最佳方法?


Answers:


201

这样使用NSSortDescriptor..

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

stories是要排序的数组。recent是另一个具有排序字典值的可变数组。@"interest"用必须排序的键值更改。

祝一切顺利


12
很好,但是确实泄漏。1)应该释放或自动释放排序描述符,并且2)不需要复制调用,可以删除该行。
汤姆·安德森

5
NSSortDescriptor * descriptor = [[[[NSSortDescriptor alloc] initWithKey:@“ interest” ascending:YES] autorelease]; [故事sortUsingDescriptors:[NSArray arrayWithObjects:descriptor,nil]];
汤姆·安德森

2
您可以使用NSSortDescriptor * descriptor = [NSSortDescriptor sortDescriptorWithKey:@“ interest”升序:是];
maxcanna 2011年

1
最近= [[故事sortedArrayUsingDescriptors:[NSArray arrayWithObjects:descriptor,nil]]复制];
J3RM 2012年

您需要在排序调用期间存储输出:NSArray *最近= [故事sortedArrayUsingDescriptors:[NSArray arrayWithObjects:descriptor,nil]];
罗布

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

我真的不想将其分成多行。对我来说已经足够简单了。


NSSortDescriptor * descriptor = [NSSortDescriptor sortDescriptorWithKey:@“ name”升序:是];[resultArray1 sortUsingDescriptors:[NSArray arrayWithObjects:descriptor,nil]];
johndpope 2012年


4

Update,sortUsingDescriptors现在是sortedArrayUsingDescriptors

因此,它像:

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

您似乎在-[NSArray sortedArrayUsingDescriptors]和-感到困惑[NSMutableArray sortUsingDescriptors]。最新版本仍然存在,尚未被取代。
Dalzhim 2014年


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

记住分配给数组

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.