【发布时间】:2017-10-09 09:59:22
【问题描述】:
我正在尝试使用今日扩展小部件中的 Core Data 访问数据库。
创建核心数据容器的函数是这样的:
func createContainer(completion: @escaping (NSPersistentContainer) -> ()) {
let applicationGroupIdentifier = "group.com.name.exampleApp.sharedContainer"
guard let newURL = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: applicationGroupIdentifier)
else { fatalError("Could not create persistent store URL") }
let persistentStoreDescription = NSPersistentStoreDescription()
persistentStoreDescription.url = newURL
let container = NSPersistentContainer(name: "ContainerName")
container.persistentStoreDescriptions = [persistentStoreDescription]
container.loadPersistentStores { (_, error) in
guard error == nil else { fatalError("Failed to load store:\(String(describing: error))") }
DispatchQueue.main.async { completion(container) }
}
}
但是,我收到以下错误:
CoreData:错误:尝试在路径中添加只读文件 file:///private/var/mobile/Containers/Shared/AppGroup/C9324B65B-265C-4264-95DE-B5AC5C9DAFD0/ 读/写。改为只读方式添加。这将是一个硬错误 未来;您必须指定 NSReadOnlyPersistentStoreOption。
如果我像这样指定 NSReadOnlyPersistentStoreOption:
persistentStoreDescription.isReadOnly = false
我得到错误:
加载存储失败:可选(错误域=NSCocoaErrorDomain 代码=513 "无法保存文件,因为您没有权限。"):
可能是什么原因和解决方法?
【问题讨论】: