按元素属性对元素对象数组进行排序

时间:2015-09-18 00:50:58

标签: ios nsarray nssortdescriptor

我上课了。让我们称这个班为MyObject

MyObject有一个名为item的属性。

如果我创建MyObject的实例,则instanceOfObject.itemNSMetadataItem

NSMetadataItem有一个名为NSMetadataItemFSNameKey的属性。

我有一个MyObjects数组,我希望按属性NSMetadataItemFSNameKey对该数组进行排序。

我试过了

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:NSMetadataItemFSNameKey
                                                               ascending:YES];

[array sortUsingDescriptors:@[sortDescriptor]];

但这显然会崩溃,因为NSMetadataItemFSNameKey不是array的关键字。就像我说的那样,NSMetadataItemFSNameKeyinstanceOfObject.item的属性。

有没有办法使用NSSortDescriptors

执行此操作

1 个答案:

答案 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,让我知道它是什么,我可以帮你修改这个(或者我可能已经有一个浮动的例子,我可以告诉你)。