Lob*_*obo 7 core-data ios xcode11
在iOS 12设备上使用Xcode 11(测试版3)构建和运行Core Data项目(使用Xcode 10创建)时,出现以下警告:
CoreData:注释:无法在路径'/var/containers/Bundle/Application/7908B3F7-66BC-4931-A578-6A740CBFB37D/TestOMO.app/TestOMO.momd/TestOMO.omo'上加载优化的模型
如果没有警告
我的应用程序似乎可以正常运行,并且没有崩溃,因此我不确定收到此警告的认真程度。尽管如此,我当然希望摆脱它。
有许多与此核心数据注释相关的帖子,但大多数与Google Maps相关或未答复。
我创建了一个新项目,以消除与我自己的项目相关的问题的其他原因,并使其易于重现,如下所示:
清理构建文件夹或删除派生数据没有帮助。
由于上面@ChaitanyaKhurana 评论中的提示,我能够解决这个问题。
这是我实现的 swift 代码,替换了原来的单行
let container = NSPersistentContainer(name: "ModelName")
Run Code Online (Sandbox Code Playgroud)
需要部分代码来检索模型版本字符串(从位于 .momd 包中的 .plist 文件),以避免每次有新模型版本时都必须更新代码。
另请注意,新/替代代码仅在 13.0 之前的 iOS 版本上执行,因为在 iOS 13 上没有问题。
let modelName = "ModelName"
var container: NSPersistentContainer!
if #available(iOS 13.0, *) {
container = NSPersistentContainer(name: modelName)
} else {
var modelURL = Bundle(for: type(of: self)).url(forResource: modelName, withExtension: "momd")!
let versionInfoURL = modelURL.appendingPathComponent("VersionInfo.plist")
if let versionInfoNSDictionary = NSDictionary(contentsOf: versionInfoURL),
let version = versionInfoNSDictionary.object(forKey: "NSManagedObjectModel_CurrentVersionName") as? String {
modelURL.appendPathComponent("\(version).mom")
let managedObjectModel = NSManagedObjectModel(contentsOf: modelURL)
container = NSPersistentContainer(name: modelName, managedObjectModel: managedObjectModel!)
} else {
//fall back solution; runs fine despite "Failed to load optimized model" warning
container = NSPersistentContainer(name: modelName)
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
589 次 |
| 最近记录: |