【发布时间】:2010-09-15 17:17:06
【问题描述】:
我有一个 nsmutable 数组,其中近 50 -60 个对象有不同的名称,我可以按字母顺序对这个数组进行排序吗(有可能吗,如何?)
【问题讨论】:
标签: iphone objective-c xcode nsmutablearray nsarray
我有一个 nsmutable 数组,其中近 50 -60 个对象有不同的名称,我可以按字母顺序对这个数组进行排序吗(有可能吗,如何?)
【问题讨论】:
标签: iphone objective-c xcode nsmutablearray nsarray
对于像这样的简单排序,我喜欢使用排序描述符。
假设您有一个可变对象数组,其类具有name NSString 属性:
NSSortDescriptor *sort=[NSSortDescriptor sortDescriptorWithKey:@"name" ascending:NO];
[myArray sortUsingDescriptors:[NSArray arrayWithObject:sort]];
【讨论】:
当然,您可以为此使用sortUsingSelector::
[myArray sortUsingSelector:@selector(compare:)];
如果您的数组有自定义对象,那么您需要对这些对象实现排序方法:
@implementation myCustomObject
...
-(NSComparisonResult) compare:(myCustomObject*) other {
return [self.name compare:other.name];
}
@end
【讨论】:
TechZen 的方法效果很好,但如果您使用 NSSortDescriptor 的 +sortDescriptorWithKey:ascending:selector:,将“localizedCompare:”作为选择器传递,效果会更好。这样,排序就本地化为用户的语言,这可以在字符串比较中产生很大的不同。
【讨论】:
myArray=[myDict keysSortedByValueUsingSelector:@selector(compare:)];
简单地为我工作!
【讨论】: