iOS核心数据移动保存位置
我正在尝试移动我的核心数据位置,以便在iPhone应用程序和Apple Watch应用程序之间共享它。到目前为止的调查显示,我需要为两个应用程序使用应用程序容器来访问相同的核心数据信息 我已经建立了团队,并将其添加到两个目标中iOS核心数据移动保存位置,ios,core-data,Ios,Core Data,我正在尝试移动我的核心数据位置,以便在iPhone应用程序和Apple Watch应用程序之间共享它。到目前为止的调查显示,我需要为两个应用程序使用应用程序容器来访问相同的核心数据信息 我已经建立了团队,并将其添加到两个目标中 group.Desbrina.dpl.Diamond-Painting-Logbook.shared 所以,我一直在下面的网站上学习教程, 并修改了我的应用程序委托,但未加载现有数据,也未保存新数据。根据我所能找到的,我需要将现有的核心数据迁移到新位置。我还没有找到任
group.Desbrina.dpl.Diamond-Painting-Logbook.shared
所以,我一直在下面的网站上学习教程,
并修改了我的应用程序委托,但未加载现有数据,也未保存新数据。根据我所能找到的,我需要将现有的核心数据迁移到新位置。我还没有找到任何东西来解释如何使用最新版本的swift
当前工作版本是使用
lazy var persistentContainer: NSPersistentContainer = {
let container = NSPersistentContainer(name: "Diamond_Painting_Logbook")
container.loadPersistentStores(completionHandler: { (storeDescription, error) in
if let error = error as NSError? {
fatalError("Unresolved error \(error), \(error.userInfo)")
}
})
return container
}()
我拥有的新位置的修改代码为
/*lazy var persistentContainer: NSPersistentContainer = {
let container = NSCustomPersistentContainer(name: "Diamond_Painting_Logbook")
container.loadPersistentStores(completionHandler: { (storeDescription, error) in
if let error = error as NSError? {
fatalError("Unresolved error \(error), \(error.userInfo)")
}
})
return container
}()*/
class NSCustomPersistentContainer: NSPersistentContainer {
override open class func defaultDirectoryURL() -> URL {
var storeURL = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: "group.Desbrina.dpl.Diamond-Painting-Logbook.shared")
storeURL = storeURL?.appendingPathComponent("Diamond_Painting_Logbook.sqlite")
return storeURL!
}
}
我曾尝试使用下面的移动商店,但它在Mirror store行中出错
persistentContainer = NSPersistentContainer(name: "Diamond_Painting_Logbook")
persistentContainer.loadPersistentStores { (description, error) in
if let error = error {
fatalError("Could not create CoreData store: \(error)")
}
var nURL = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: "group.Desbrina.dpl.Diamond-Painting-Logbook.shared")
nURL = nURL?.appendingPathComponent("Diamond_Painting_Logbook.sqlite")
if let newURL = nURL {
do {
let psc = self.persistentContainer.persistentStoreCoordinator
let store = psc.persistentStores[0]
NSLog("7 *****************")
try psc.migratePersistentStore(store, to: newURL, options: nil, withType: NSSQLiteStoreType)
NSLog("8 *****************")
} catch {
}
}
}
错误是
2019-11-23 19:55:45.132081+0000钻石绘画日志[6707:1813609]7*****************
2019-11-23 19:55:45.132863+0000钻石绘画日志[6707:1813609][logging persist]无法打开[378230ae7f]第43353行的文件
2019-11-23 19:55:45.132901+0000菱形喷漆日志[6707:1813609][日志保存]os_unix.c:43353:(0)打开(/private/var/mobile/Containers/Shared/AppGroup/BF375BFE-4AF0-4F78-BDEE-C4A4A12493B3/Diamond_喷漆日志.sqlite)-未定义错误:0
2019-11-23 19:55:45.132917+0000菱形绘制日志[6707:1813609][logging]使用未打开的数据库连接指针调用API
2019-11-23 19:55:45.132929+0000钻石涂装日志[6707:1813609][logging]在[378230ae7f]的第162611行被误用
2019-11-23 19:55:45.133370+0000菱形喷漆日志[6707:1813609][error]错误:-addPersistentStoreWithType:SQLite配置:PF\U默认配置\U名称URL:file:///private/var/mobile/Containers/Shared/AppGroup/BF375BFE-4AF0-4F78-BDEE-C4A4A12493B3/Diamond_Painting_Logbook.sqlite/ 选项:{
NSPersistentStoreRemoveUbiquitousMetadataOption=1;
} ... 使用userInfo字典返回错误NSCOCAERRORDOMAIN(256){
NSFilePath=“/private/var/mobile/Containers/Shared/AppGroup/BF375BFE-4AF0-4F78-BDEE-C4A4A12493B3/Diamond_Painting_Logbook.sqlite”;
NSSQLiteErrorDomain=14;
}
CoreData:错误:-addPersistentStoreWithType:SQLite配置:PF\u默认\u配置\u名称URL:file:///private/var/mobile/Containers/Shared/AppGroup/BF375BFE-4AF0-4F78-BDEE-C4A4A12493B3/Diamond_Painting_Logbook.sqlite/ 选项:{
NSPersistentStoreRemoveUbiquitousMetadataOption=1;
} ... 使用userInfo字典返回错误NSCOCAERRORDOMAIN(256){
NSFilePath=“/private/var/mobile/Containers/Shared/AppGroup/BF375BFE-4AF0-4F78-BDEE-C4A4A12493B3/Diamond_Painting_Logbook.sqlite”;
NSSQLiteErrorDomain=14;
}