我在我現有的應用程序中添加了Today Extension,並設置了一個單獨的核心數據堆棧(重複使用用於爲主應用程序設置核心數據的相同代碼)。
當我運行Today擴展時,我的應用程序數據被刪除,就像設置Today核心數據堆棧刪除現有數據一樣。請參考下代碼返回persistentCoordinator
:今天擴展刪除sqlite中的數據
let options = [NSMigratePersistentStoresAutomaticallyOption:true,
NSInferMappingModelAutomaticallyOption:true,
NSSQLitePragmasOption:["journal_mode":"MEMORY"]]
var coordinator: NSPersistentStoreCoordinator? = NSPersistentStoreCoordinator(managedObjectModel: self.managedObjectModel)
if coordinator!.addPersistentStoreWithType(NSSQLiteStoreType, configuration: nil, URL: storeURL, options: options, error: &error) == nil {
NSLog("Unresolved error \(error)")
}
return coordinator
看來你的'storeurl'不正確,請確保它使用分組文件夾。你的函數'applicationDocumentsDirectory'應該返回groupPath,在你的情況下,似乎應用程序正在創建一個新的CoreData,而不是使用正確的。 – iphonic
我正在使用共享組標識來設置核心數據。只有當我今天嘗試打開(獲取數據)並且主應用程序未被殺死時,數據纔會刪除。如果主應用程序被殺害今天工作正常,沒有數據被刪除。 –
你爲什麼將'journal_mode'設置爲'MEMORY'? SQLite文檔說這個[「...保存磁盤I/O但犧牲數據庫的安全性和完整性。」](https://sqlite.org/pragma.html) –