按元素的属性对元素的对象数组进行排序
Sorting an array of objects of elements by an attribute of elements
我有一个class。让我们称之为 class MyObject
。
MyObject
有一个名为 item
的 属性。
如果我创建 MyObject
的实例,instanceOfObject.item
是 NSMetadataItem
。
NSMetadataItem
s 有一个名为 NSMetadataItemFSNameKey
.
的属性
我有一个 MyObjects
的数组,我想按属性 NSMetadataItemFSNameKey
.
对该数组进行排序
我试过了
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:NSMetadataItemFSNameKey
ascending:YES];
[array sortUsingDescriptors:@[sortDescriptor]];
但这显然会崩溃,因为 NSMetadataItemFSNameKey
不是 array
的键。正如我所说,NSMetadataItemFSNameKey
是 instanceOfObject.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 让我知道它是什么,我可以帮助你修改这个(或者我可能已经有一个它的例子我可以给你看)。
我有一个class。让我们称之为 class MyObject
。
MyObject
有一个名为 item
的 属性。
如果我创建 MyObject
的实例,instanceOfObject.item
是 NSMetadataItem
。
NSMetadataItem
s 有一个名为 NSMetadataItemFSNameKey
.
我有一个 MyObjects
的数组,我想按属性 NSMetadataItemFSNameKey
.
我试过了
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:NSMetadataItemFSNameKey
ascending:YES];
[array sortUsingDescriptors:@[sortDescriptor]];
但这显然会崩溃,因为 NSMetadataItemFSNameKey
不是 array
的键。正如我所说,NSMetadataItemFSNameKey
是 instanceOfObject.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 让我知道它是什么,我可以帮助你修改这个(或者我可能已经有一个它的例子我可以给你看)。