私はスタンフォードコースcs193pのCoreDataTableViewControllerを使用しており、viewWillAppearで呼び出します
self.fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request
managedObjectContext:self.dataBase.managedObjectContext
sectionNameKeyPath:nil
cacheName:nil];
これにより、ランダムにアプリがフリーズします(クラッシュせず、フリーズするだけです)。CoreDataTableViewController で、セッターは次のように [self performFetch] を呼び出します。
- (void)performFetch
{
if (self.fetchedResultsController) {
if (self.fetchedResultsController.fetchRequest.predicate) {
if (self.debug) NSLog(@"[%@ %@] fetching %@ with predicate: %@", NSStringFromClass([self class]), NSStringFromSelector(_cmd), self.fetchedResultsController.fetchRequest.entityName, self.fetchedResultsController.fetchRequest.predicate);
} else {
if (self.debug) NSLog(@"[%@ %@] fetching all %@ (i.e., no predicate)", NSStringFromClass([self class]), NSStringFromSelector(_cmd), self.fetchedResultsController.fetchRequest.entityName);
}
NSError *error;
NSLog(@"before");
[self.fetchedResultsController performFetch:&error];
NSLog(@"after");
if (error) NSLog(@"[%@ %@] %@ (%@)", NSStringFromClass([self class]), NSStringFromSelector(_cmd), [error localizedDescription], [error localizedFailureReason]);
} else {
if (self.debug) NSLog(@"[%@ %@] no NSFetchedResultsController (yet?)", NSStringFromClass([self class]), NSStringFromSelector(_cmd));
}
[self.tableView reloadData];
}
そして、それが引っかかる行は
[self.fetchedResultsController performFetch:&error];
助言がありますか?