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