我有一个完全基于 Objective C 的应用程序,它使用核心数据。我用 swift 重写了完整的应用程序,现在使用 Relam 进行 swift 应用程序。当用户从 Objective C 升级到 swift 应用程序时,我想将一些数据库从核心数据迁移到 Realm。但我无法访问核心数据文件。
两个应用程序具有相同的 bundle 标识符。
Objective C version:
NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"StoreName" withExtension:@"momd"];
Swift Version:
let url = Bundle.main.url(forResource: "StoreName", withExtension: "momd")
最佳答案
如果您使用的是 ios 10 以上版本,请按照以下方法操作
lazy var persistentContainer: NSPersistentContainer = {
let container = NSPersistentContainer(name: "StoreName")
container.loadPersistentStores(completionHandler: { (storeDescription, error) in
})
return container
}()
使用以下方法获取上下文
func context() -> NSManagedObjectContext {
if #available(iOS 10.0, *) {
return persistentContainer.viewContext
} else {
// Fallback on earlier versions
return managedObjectContext
}
}
关于ios - 无法访问核心数据文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48339573/