0

我有问题试图让我的CoreData保存,我之前使用过CoreData,通常不会遇到这些问题。谁能告诉我什么是错用下面的代码:CodeData not saving

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]]; 

所以实体返回绝对应该是在单身manabged对象上下文。对于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拆除的对象后,可看到该对象已被删除。在重新启动应用程序之前,该对象不会重新出现,因此它必须是持久性问题。任何人都可以弄清楚我的代码有什么问题,因为我完全困惑。

回答

1

我已经设法解决这个问题,似乎在我删除对象的方式内撒谎。相反,我现在使用由CoreData创建的设置删除功能,以下代码用于具有相同问题的任何其他人:

MapEntity *mapEntity = [_fetchedResultsController objectAtIndexPath:[NSIndexPath indexPathForItem:0 inSection:0]]; 

    NSSet *removeSet = [NSSet setWithObject:self.selectedPoint]; 
    [mapEntity removePoints:removeSet]; 

    self.selectedPoint = nil; 
    [[Singleton sharedSingleton] saveContext];