使用ManagedObjectContext保存问题

时间:2012-01-18 17:36:11

标签: ios xcode core-data

我是iOS开发的新手,所以请耐心等待。我创建了一个使用CoreData框架的应用程序,我一直在关注Apple网站上的教程。我有一个带有Context,Object和PersistantStore的AppDelegate文件。 RootViewController,以及RootViewController使用Context和fetchedResultsController调用的SubViewController。在我的ModelData中,我有4个字符串属性,用于存储有关其会话的基本用户信息。

我想要做的是当用户退出程序时,他们的过去信息被删除并且新信息将被保存。我只想一直保存1个条目。问题是,当我进入保存时,由于某种原因我得到一个SIGABRT。当我在保存周围尝试捕获时,我能够在下次尝试保存时看到数据。但是,当我重新启动应用程序时,会话信息不再存在。

有没有人可以给我任何好的建议?

修改

-(void)UpdateSession
{
    // Delete all records
    NSFetchRequest *request = [[NSFetchRequest alloc] init];
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Session" inManagedObjectContext:managedObjectContext];
    [request setEntity:entity];

    NSError *error = nil;
    NSArray *items = [managedObjectContext executeFetchRequest:request error:&error];
    [request release];

    // Create and store a new session
    Session *newSession = (Session *)[NSEntityDescription insertNewObjectForEntityForName:@"Session" inManagedObjectContext:managedObjectContext];

    // Set the data
    [newSession setMap:@"TestMap"];
    [newSession setLayout:@"Top"];
    [newSession setSpeed:@"3"];
    [newSession setCamera:@"1"];
    error = nil;

    if(![managedObjectContext save:&error])
    {
        NSLog("Error");
    }
}

2 个答案:

答案 0 :(得分:0)

我发现了SO这个问题。你需要检查的东西。你有任何NSFetchedResultsController可能对上下文保存做出反应吗?

这个SO是相关的,但基本上在两个答案中都有一些东西对moc保存做出反应并尝试与委托方法交谈,它不应该这样做。

答案 1 :(得分:0)

在查看其他核心数据教程后,我想出了答案。奇怪的是,我必须创建数据库的本地副本,然后将其移动到iOS应用程序中,这似乎有效。这很奇怪,因为iOS应用程序应该创建存储文件并直接从中读取和写入。不确定这是一个有权限的问题还是什么不是,但似乎所有人都能够正常运行。