注意:由于反对票太多,这个问题已经完全重新组织。
我正在使用带有核心数据的 NSFetchedResults 显示 UITableViewController。它显示得很好,但是当我推送一个新的视图控制器并且用户使用后退按钮导航回 UITableView 时,它会因该错误而崩溃。
我已经为此奋斗了好几个星期,还没有弄清楚为什么。我可以说它可能与内存管理有关,但我无法在任何地方找到它。
更新:使用 Instruments-Zombies 我发现实际上它在 CoreData - 上崩溃了prepareResultsForResultsSet
。看图片
这是我的 FetchedResultsController 中的代码
- (NSFetchedResultsController *)fetchedResultsController {
NSManagedObjectContext *thecontext;
thecontext = [(Logix_AppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext];
if (fetchedResultsController != nil) {
return fetchedResultsController;
}
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"TimeOff" inManagedObjectContext:thecontext];
[fetchRequest setEntity:entity];
NSSortDescriptor *sort = [[NSSortDescriptor alloc] initWithKey:@"timeOffStartDate" ascending:NO];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sort]];
[fetchRequest setFetchBatchSize:20];
NSFetchedResultsController *theFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:thecontext sectionNameKeyPath: @"timeOffType" cacheName:nil];
self.fetchedResultsController = theFetchedResultsController;
fetchedResultsController.delegate = self;
[sort release];
[fetchRequest release];
[theFetchedResultsController release];
return fetchedResultsController;
}