我试图在一个可变数组的类型上对属性进行排序。 但是我只设法对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? ,但我似乎无法让这种情况适用于我的情景。
答案 0 :(得分:2)
为了使用sortUsingSelector进行排序,您需要在要比较的对象中实现compare方法。 (因此,您的DBFILESMetadata
课程需要一种比较方法 - 上面代码中的localizedCaseInsensitiveCompare
。)
您应该能够在第二次尝试时使用排序描述符。当你这样做会发生什么?
第三种方法是使用NSMutableArray
sortUsingComparator
并编写一个比较2个对象的NSComparator
块。
我没有使用Objective-C,但是快速的Google搜索找到了一个示例,我根据您的具体问题进行了调整:
[entries sortUsingComparator:
^NSComparisonResult(DBFILESMetadata *obj1, DBFILESMetadata *obj2)
{
return [obj1.name localizedCaseInsensitiveCompare: obj2.name];
}];
这应该有用,虽然我说我在Objective-C中没有实践,但它的块语法非常笨拙且反直觉。