我正在尝试对可变数组类型的属性进行排序。 但是我只设法对 NSString 数组进行排序。
NSMutableArray<DBFILESFileMetadata*> *tmpArray = [[NSMutableArray alloc]init];
for (DBFILESMetadata *entry in entries)
{
//conditions
[tmpArray addObject:fileMetadata];
}
这是类型/类
我试过了
[yourArray sortUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
和
NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES];
[yourArray sortUsingDescriptors:[NSArray arrayWithObject:sort]];
该属性称为名称。
我见过这样的答案How can I sort an NSMutableArray alphabetically? 但我似乎无法让它适用于我的场景。
最佳答案
为了使用 sortUsingSelector 进行排序,您需要在您尝试比较的对象中实现比较方法。 (因此您的 DBFILESMetadata
类需要一个比较方法 - 上面代码中的 localizedCaseInsensitiveCompare
。)
您应该也可以使用您在第二次尝试中展示的排序描述符。当你这样做时会发生什么?
第三种方法是使用 NSMutableArray
sortUsingComparator
并编写一个 NSComparator
block 来比较这两个对象。
我没有使用 Objective-C,但通过快速 Google 搜索找到了一个示例,我根据您的具体问题对其进行了调整:
[entries sortUsingComparator:
^NSComparisonResult(DBFILESMetadata *obj1, DBFILESMetadata *obj2)
{
return [obj1.name localizedCaseInsensitiveCompare: obj2.name];
}];
这应该行得通,尽管正如我所说,我没有练习 Objective-C,而且它的 block 语法非常笨拙且违反直觉。
关于ios - Objective-C,按字母顺序对类型类的 NSMultable 数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44337475/