我在尝试保存我的 CoreData 时遇到问题,我以前使用过 CoreData 并且通常不会遇到这些问题。有人可以告诉我以下代码有什么问题:
MapEntity *mapEntity = [_fetchedResultsController objectAtIndexPath:[NSIndexPath indexPathForItem:0 inSection:0]];
NSMutableSet *set = (NSMutableSet *)mapEntity.points;
[set removeObject:self.selectedPoint];
self.selectedPoint = nil;
[[Singleton sharedSingleton] saveContext];
为了初始化我获取的受控结果,我使用以下命令:
NSEntityDescription *entity = [NSEntityDescription entityForName:@"MapEntity" inManagedObjectContext:[[Singleton sharedSingleton] managedObjectContext]];
所以返回的实体肯定应该在单例管理对象上下文中。saveContext 的代码如下:
- (void)saveContext
{
NSError *error = nil;
NSManagedObjectContext *managedObjectContext = self.managedObjectContext;
if (managedObjectContext != nil) {
if ([managedObjectContext hasChanges] && ![managedObjectContext save:&error]) {
NSLog(@"Unable to save context");
}
}
}
如果我在移除对象后检查 mapEntity.points,我可以看到对象已被移除。在我重新启动应用程序之前,该对象不会重新出现,因此它一定是一个持久性问题。任何人都可以弄清楚我的代码有什么问题,因为我完全感到困惑。