【发布时间】:2015-06-04 10:51:10
【问题描述】:
我在现有应用中添加了 Today Extension,并设置了单独的核心数据堆栈(重复使用用于为主应用设置核心数据的相同代码)。
当我运行 Today 扩展时,我的应用程序数据被删除,就好像设置 Today 核心数据堆栈会删除现有数据一样。参考以下代码返回persistentCoordinator:
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,而不是使用正确的。 -
我正在使用共享组标识符来设置核心数据。只有当我今天尝试打开(获取数据)并且主应用程序没有被杀死时,数据才会删除。如果主应用程序被杀死,今天可以正常工作并且没有数据被删除。
-
为什么将
journal_mode设置为MEMORY? SQLite 文档说这个"...saves disk I/O but at the expense of database safety and integrity." -
我实现了pablin.org/2013/05/24/…中提到的解决方案。问题仍然存在,但我的数据没有。
-
那篇博文没有说明将日记模式设置为
MEMORY。
标签: ios sqlite core-data ios8-today-widget today-extension