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

Sorting an array of objects of elements by an attribute of elements

我有一个class。让我们称之为 class MyObject

MyObject 有一个名为 item 的 属性。

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

NSMetadataItems 有一个名为 NSMetadataItemFSNameKey.

的属性

我有一个 MyObjects 的数组,我想按属性 NSMetadataItemFSNameKey.

对该数组进行排序

我试过了

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

[array sortUsingDescriptors:@[sortDescriptor]];

但这显然会崩溃,因为 NSMetadataItemFSNameKey 不是 array 的键。正如我所说,NSMetadataItemFSNameKeyinstanceOfObject.item 的属性。

有没有办法使用 NSSortDescriptors 来做到这一点?

我不确定这是否是您要查找的内容,但我使用这种方法按指定的 NSString 属性 对自定义数组 objects 进行排序:

//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 自定义 class header 进行此调用的位置。您还可以通过对这种方法稍作修改来比较其他数据类型。如果你有一个特定的数据类型而不是 NSString 让我知道它是什么,我可以帮助你修改这个(或者我可能已经有一个它的例子我可以给你看)。