我取名叫“DictObj”境界对象的财产目录“指数”是这样的:如何按列表对Realm结果顺序进行排序?
NSArray *listIDs = @[@1000,@0,@100,@4];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"index IN %@",listIDs];
self.fetchedResults = [DictObj objectsInRealm:realm withPredicate:predicate];
我只是取的结果,但它通过主键“指数”自动顺序,我想通过“listIDs保持秩序”。所以,我创建sortDescriptor并尝试自定义排序像下面,但它与错误崩溃:“终止应用程序由于未捕获的异常‘NSInvalidArgumentException’,原因是:“ - [NSSortDescriptor属性]:无法识别的选择发送到实例0X”
NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"index" ascending:NO comparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) {
NSNumber *num1 = [NSNumber numberWithInteger:(NSInteger)obj1];
NSNumber *num2 = [NSNumber numberWithInteger:(NSInteger)obj2];
NSInteger listIndex1 = [listIDs indexOfObject:num1];
NSInteger listIndex2 = [listIDs indexOfObject:num2];
return listIndex1 < listIndex2;
}];
self.fetchedResults = [[DictObj objectsInRealm:realm withPredicate:predicate] sortedResultsUsingDescriptors:@[sortDescriptor]];
//Model
@interface DictObj : RLMObject
@property NSInteger index;
@property NSString *name;
@end
如何自定义按Realm中的列表排序结果顺序?
谢谢!当它仅支持按属性排序时非常难过。我希望它会很快更新,至少在“IN列表”的情况下保持秩序。 –