我正在研究基於Xcode CoreData示例的項目。我有一個名爲Entity
與存儲的實體被更新的時間戳updated
密鑰的實體類和NSFetchResultsController設置降序排列與它進行排序:NSFetchedResultsController按錯誤順序排序
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?謝謝:)
當你插入一個新的對象,你怎麼取? –
委託方法' - (void)controllerWillChangeContent:(NSFetchedResultsController *)controller' ...當NSManagedObjectContext被保存時被調用。 –