2013-10-22 172 views
0

我一直在使用我的文檔目錄中的database.sqlite數據存儲文件的項目中使用核心數據。我的應用程序允許導出此sqlite文件作爲備份以便以後恢復。備份工作正常。NSPersistentStoreCoordinator沒有持久性存儲 - 偶爾會發生

我有從iOS6設備導出的備份文件。我想將這個備份文件導入到我的應用程序中。我將該文件作爲郵件附件,我使用open-in來打開它與應用程序。在ios6或更早版本中正常工作。我試圖多次導入相同的文件,它很好地工作。

我最近將數據庫架構更改爲新版本,其中自動遷移能夠切換到新數據庫。如果我的設備在iOS6中,則可以導入舊的數據庫文件或現在導出的任何文件。我可以做任何次數。

現在,如果您將我的設備更改爲iOS7,則可以導入最近導出的文件多次。但如果我嘗試導入之前導出的舊文件,我可以導入一次。該應用程序工作正常。然後我嘗試再次導入它,現在從第二次嘗試開始失敗。標題中提到的錯誤。僅在iOS7中,並且只能連續第二次嘗試。

我正在使用scarybug文檔解壓到導入的文件。然後我用導入的替換現有的sqlite數據庫文件。每次在iOS6中工作,在iOS7中第一次工作,但在第二次嘗試時在iOS7中失敗。

執行導入之前,所有更改提交/保存,管理的對象上下文重置和持久性存儲協調器重置。新文件取代了舊文件,並且已經工作了很長時間。該問題只發現iOS7從第二次嘗試與從iOS6導出相同的文件

任何幫助&查詢將不勝感激。謝謝。

回答

0

新增本字典 -

NSMutableDictionary *pragmaOptions = [NSMutableDictionary dictionary]; 
[pragmaOptions setObject:@"NORMAL" forKey:@"locking_mode"]; 
[pragmaOptions setObject:@"DELETE" forKey:@"journal_mode"]; 

的選項字典 -

NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys: 
         [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, 
         [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, 
         pragmaOptions, NSSQLitePragmasOption, nil]; 

用於創建我的persistentStoreCoordinator。這解決了我的問題。

相關問題