我正在开发一个基于 Xcode 的 CoreData 示例的项目。Entity
我有一个用一个键命名的实体类,updated
它存储实体更新的时间戳,并且 NSFetchResultsController 设置为按降序排序:
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; [fetchRequest setEntity:[NSEntityDescription entityForName:@"Entity" inManagedObjectContext:_managedObjectContext]]; [fetchRequest setFetchBatchSize:20]; [fetchRequest setSortDescriptors:@[[[NSSortDescriptor alloc] initWithKey:@"updated" ascending:NO]]]; NSFetchedResultsController *frc = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:_managedObjectContext sectionNameKeyPath:nil cacheName:nil];
这在初始加载时效果很好,但是当我插入一个应该插入其他对象之间的 NSManagedObject 时,它会插入到顶部。当我重新启动应用程序时,它会插入到正确的位置。
例如:最初的表格看起来像:
updated: 300
updated: 200
updated: 100
当我插入一个 ManagedObject: 时updated: 250
,我希望表格看起来像:
updated: 300
updated: 250 <-- inserted here
updated: 200
updated: 100
但这就是我得到的:
updated: 250 <-- inserted at the top
updated: 300
updated: 200
updated: 100
这是 NSFetchResultsController 的工作方式,还是有什么方法可以在每次插入时重新排序所有 NSManagedObjects?谢谢 :)