1

「NSManagedObject」が削除されたかどうかを確認するにはどうすればよいですか?などの関連する問題をいくつか確認しました。、削除された NSManagedObjects を取得しないようにします。

しかし、私はdeleteCacheWithNameanddeleteObject:を使用しsave、オブジェクトも削除されていることを確認しました。バックグラウンドからアプリを削除するたびに。そして、最初からやり直すと、削除されたデータNSManagedObjectが再び戻ってきます。

これが私が削除する方法ですNSManagedObject

[NSFetchedResultsController deleteCacheWithName:@"MyLists"];
[_fetchedResultsController.managedObjectContext deleteObject:list];
NSError *error;
if ([_fetchedResultsController.managedObjectContext save:&error]) {
  NIDPRINT(@"managedObjectContext Save Error: %@", error.localizedDescription);
}
NIDPRINT(@"Check hasManagedObjectBeenDeleted: %@", [self hasManagedObjectBeenDeleted:list] ? @"YES" : @"NO");

そして、これが私のイニシャルですNSFetchedResultsController

NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"MyList"];
fetchRequest.sortDescriptors = @[ [[NSSortDescriptor alloc] initWithKey:@"listID" ascending:YES] ];
NSString *userName = [[ICAccountManager sharedManager] getUsername];
NSString *format = [NSString stringWithFormat:@"username==\"%@\"", userName];
fetchRequest.predicate = [NSPredicate predicateWithFormat:format];

fetchRequest.propertiesToFetch = [NSArray arrayWithObject:@"count"];
fetchRequest.shouldRefreshRefetchedObjects = YES;
_fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:[(id)[[UIApplication sharedApplication] delegate] managedObjectContext] sectionNameKeyPath:nil cacheName:@"lists"];
_fetchedResultsController.delegate = self;
[_fetchedResultsController performSelectorOnMainThread:@selector(performFetch:) withObject:nil waitUntilDone:YES modes:@[ NSRunLoopCommonModes ]];

何か見逃しているかどうかを確認する方法はありますか?

4

1 に答える 1

1

何かを削除したら、次を追加する必要があります。

NSError *error;
[self.managedObjectContext save:&error];

これにより、アクションがコミットされます。

于 2012-11-12T01:15:07.763 に答える