如何基于一个属性对NSArray对象进行排序

时间:2011-06-06 17:52:23

标签: iphone objective-c ios sorting nsarray

我正在尝试按字母顺序对托管对象数组进行排序。它们需要排序的属性是对象的名称(NSString),它是托管属性之一。目前,我将所有名称放在一个字符串数组中,然后使用sortedNameArray = [sortedNameArray sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];,然后将它们枚举回带有对象的数组中。当两个名称相同时,这就会崩溃,所以我真的需要能够按一个属性排序。我应该怎么做呢?

2 个答案:

答案 0 :(得分:83)

使用NSSortDescriptor。只需在其上搜索文档,您就可以在其中复制一些非常简单的示例。这是一个简化的例子:

NSSortDescriptor *valueDescriptor = [[NSSortDescriptor alloc] initWithKey:@"MyStringVariableName" ascending:YES];
NSArray *descriptors = [NSArray arrayWithObject:valueDescriptor]; 
NSArray *sortedArray = [myArray sortedArrayUsingDescriptors:descriptors]; 

就像那样你有一个排序的数组。

答案 1 :(得分:0)

您可以使用NSSortDescriptor

来完成此操作

例如。

`NSSortDescriptor *valueDescriptor = [[NSSortDescriptor alloc]initWithKey:@"distance" ascending:YES];`

//我在这里代表距离排序。你应该写自己的密钥。

NSArray * descriptors = [NSArray arrayWithObject:valueDescriptor];
NSArray *sortedArray=[yourArray sortedArrayUsingDescriptors:descriptors];`