热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

iOS9,10CoreData:无法在路径中加载优化模型

如何解决《iOS9,10CoreData:无法在路径中加载优化模型》经验,为你挑选了1个好方法。

我创建了新版本的CoreData模型并将现有模型迁移到它.应用程序在iOS 9+上没有任何问题,但对于iOS 9和10我收到此错误:

2017-10-22 19:28:37.081 CafeManager [16654:1918728] CoreData:无法在路径'/ Users/dj-glock/Library/Developer/CoreSimulator/Devices/A81AA9C4-7B59-4422-BA0A-0FD0D1A05205​​中加载优化模型/data/Containers/Bundle/Application/DD66571C-4EB6-4A8B-A99B-B447DD0FFFBA/CafeManager.app/CafeManager.momd/CafeManager v2.omo'

iOS 10:

CoreData:注释:无法在路径'/ Users/dj-glock/Library/Developer/CoreSimulator/Devices/3708F142-3BD0-4C70-8515-217B7785D285/data/Containers/Bundle/Application/3842402F-BEAE-47CB中加载优化模型-8C27-EC6CA7D76B03/CafeManager.app/CafeManager.momd/CafeManager v2.omo'

我检查了很多类似的问题,但没有为我找到解决方案.我试图在模拟器上重新安装应用程序,重新启动等等.有人可以提供建议吗?

文件夹包含以下文件:

在此输入图像描述

适用于iOS 9的AppDelegate CoreData堆栈:

// MARK: - Core Data stack for iOS 8+
static var managedObjectContext: NSManagedObjectCOntext= {
    var applicationDocumentsDirectory: URL = {
        let urls = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
        return urls[urls.count-1]
    }()

    var managedObjectModel: NSManagedObjectModel = {
        let modelURL = Bundle.main.url(forResource: "CafeManager", withExtension: "momd")!
        return NSManagedObjectModel(contentsOf: modelURL)!
    }()

    var persistentStoreCoordinator: NSPersistentStoreCoordinator = {
        let a = managedObjectModel.entities
        let coordinator = NSPersistentStoreCoordinator(managedObjectModel: managedObjectModel)
        let url = applicationDocumentsDirectory.appendingPathComponent("SingleViewCoreData.sqlite")
        print(url)
        do
        {
            let optiOns= [NSMigratePersistentStoresAutomaticallyOption: true, NSInferMappingModelAutomaticallyOption: true]
            try coordinator.addPersistentStore(ofType: NSSQLiteStoreType, configurationName: nil, at: url, options: options)
        } catch {
            NSLog("Error initializing smStore for iOS 8+ - \(error.localizedDescription)")
        }
        return coordinator
    }()
    let coordinator = persistentStoreCoordinator
    var managedObjectCOntext= NSManagedObjectContext(concurrencyType: .mainQueueConcurrencyType)
    managedObjectContext.persistentStoreCoordinator = coordinator
    return managedObjectContext
}()

Apple开发者论坛

可能重复此问题.



1> mijokaliger..:

这似乎是未经优化的.mom模型版本(CafeManager v2.mom).

以下是我修复它的方法:

public func managedObjectModel() -> NSManagedObjectModel {
    let omoURL = modelBundle.url(forResource: name, withExtension: "omo", subdirectory: modelDirectoryName)
    let momURL = modelBundle.url(forResource: name, withExtension: "mom", subdirectory: modelDirectoryName)
    guard var url = omoURL ?? momURL else { fatalError("model version \(self) not found") }
    // Use unoptimized model version 

如果你在想,我想要我的速度,为什么我会使用未经优化的东西,请阅读这个答案.


推荐阅读
author-avatar
手机用户2502856895
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有