我上课了。让我们称这个班为MyObject
。
MyObject
有一个名为item
的属性。
如果我创建MyObject
的实例,则instanceOfObject.item
为NSMetadataItem
。
NSMetadataItem
有一个名为NSMetadataItemFSNameKey
的属性。
我有一个MyObjects
数组,我希望按属性NSMetadataItemFSNameKey
对该数组进行排序。
我试过了
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:NSMetadataItemFSNameKey
ascending:YES];
[array sortUsingDescriptors:@[sortDescriptor]];
但这显然会崩溃,因为NSMetadataItemFSNameKey
不是array
的关键字。就像我说的那样,NSMetadataItemFSNameKey
是instanceOfObject.item
的属性。
有没有办法使用NSSortDescriptors
?
答案 0 :(得分:2)
我不确定这是否是你要找的,但我使用这种方法按指定的NSString
属性对自定义对象数组进行排序:
//Sort the list alphabetically by propertyName
NSArray* sortedArray;
sortedArray = [startingArray sortedArrayUsingComparator:^NSComparisonResult(id a, id b) {
NSString* first = [(WSCustomObject*)a propertyName];
NSString* second = [(WSCustomObject*)b propertyName];
return [first compare:second];
}];
您只需要确保#import
您要拨打此电话的自定义类标题。您还可以使用此方法稍作修改来比较其他数据类型。如果你有一个特定的数据类型,除了NSString,让我知道它是什么,我可以帮你修改这个(或者我可能已经有一个浮动的例子,我可以告诉你)。