tabbarcontroller の 2 番目のタブに次のコードを設定しました。初めてタブを開いたとき、期待どおりにデータが適切に取得されます。ただし、タブを離れてarray
戻ってくると、フェッチ リクエストによって返される には 2 倍のエントリが含まれます。返される各オブジェクトは複製されます。タブを離れて再び戻ると、エントリが再び複製され、それぞれ 3 つになります。これを実現するリクエストの何が間違っていますか?
- (void)viewWillAppear:(BOOL)animated {
AppDelegate *delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"EntityName" inManagedObjectContext:delegate.managedObjectContext];
[fetchRequest setEntity:entity];
// sort the results, since we want the most recent entry first
NSSortDescriptor *dateSort = [[NSSortDescriptor alloc] initWithKey:@"key" ascending:NO];
NSArray *sortDescriptors = [NSArray arrayWithObject:dateSort];
[fetchRequest setSortDescriptors:sortDescriptors];
NSError *error;
NSMutableArray *array = [[delegate.managedObjectContext executeFetchRequest:fetchRequest error:&error] mutableCopy];
NSLog(@"error %@",[error localizedDescription]);
self.fetchedObjects = [array copy];
[array removeAllObjects];
[self.tableView reloadData];
}
更新: NSFetchedResultsController に切り替えたところ、問題が修正されました。