0

我在尝试保存我的 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,我可以看到对象已被移除。在我重新启动应用程序之前,该对象不会重新出现,因此它一定是一个持久性问题。任何人都可以弄清楚我的代码有什么问题,因为我完全感到困惑。

4

1 回答 1

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];
于 2013-07-17T09:57:41.300 回答