2012-01-18 53 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保存做出反應,並試圖與它不應該做的委託方法交談。