我有一些对象需要以我无法用排序描述符表达的方式进行排序(它涉及树中的位置)。目前我正在将它们排序为后台线程,收集它们的 objectID,然后将它们返回到主上下文,如下所示:
for (NSManagedObjectID *objectID in objectIDs)
{
NSManagedObject *managedObject = [mainContext existingObjectWithID:objectID error:outError];
if (!managedObject) return nil;
[array addObject:managedObject];
}
这涉及到很多数据库点击,所以我更愿意一次性完成。核心数据编程指南建议使用这样的谓词这样做:
NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:[MyEntity entityName]];
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"SELF IN %@", objectIDs];
NSArray *array = [mainContext executeFetchRequest:fetchRequest error:&error];
但是,我担心我会丢失排序,因为在其他地方他们使用 a@"SELF IN %@"
并提供排序描述符。核心数据批量故障是否保留顺序?