2012-01-18 48 views
0

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

我想要做的是当用户退出程序时,他们的过去信息被删除,新的信息将被保存。我只需要一次保存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"); 
    } 
} 
+0

你可以添加你的代码吗?所以我们可以理解你做了什么... – 2012-01-18 17:38:00

+0

也发布了完整的错误信息。如果数据中存在不一致性,核心数据将在保存时失败。 – Damo 2012-01-18 17:50:33

+0

我添加了删除和保存数据的功能。 @Damo我在我的输出窗口中看不到任何错误消息。我只是回到我的应用程序的主要功能与绿色弹出窗口说:“程序接收到的信号:”SIGABRT“ – Seb 2012-01-18 17:55:44

回答

0

在查看其他核心数据教程后,我想出了答案。奇怪的是,我不得不创建数据库的本地副本,然后将它移到iOS应用程序中,这似乎工作。这很奇怪,因为iOS应用程序应该创建存储文件并直接从它读取和写入。不知道这是否是权限问题或不是,但似乎所有人都能够正常运行。

0

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

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