Swift 4,CoreData:错误:无法加载名为 textTabelView 的模型

Posted

技术标签:

【中文标题】Swift 4,CoreData:错误:无法加载名为 textTabelView 的模型【英文标题】:Swift 4 ,CoreData: error: Failed to load model named textTabelView 【发布时间】:2017-11-13 02:51:54 【问题描述】:

当我在 Xcode 9 中使用 Swift4 时

2017-11-13 10:17:15.807151+0800 textTabelView[1146:53409] [发现] 发现扩展时遇到的错误:Error Domain=PlugInKit Code=13 "query cancelled" UserInfo=NSLocalizedDescription=query cancelled 2017-11-13 10:17:16.369075+0800 textTabelView[1146:52958] [错误] 错误:失败 加载名为 textTabelView CoreData 的模型:错误:无法加载名为 textTabelView 的模型

我的代码:

@IBAction func savaArea(_ sender: UIBarButtonItem) 

    let appDelegate = UIApplication.shared.delegate as! AppDelegate

    area = AreaMO(context: appDelegate.persistentContainer.viewContext)
    area.area = areaText.text
    area.province = provinceText.text
    area.part = partText.text
    area.isVisited = visitedLabel.text
    if let imageData = UIImageJPEGRepresentation(coverImageView.image!, 0.8)
        area.image = NSData(data: imageData) as Data
    
    print("saving...")
    appDelegate.saveContext()

    performSegue(withIdentifier: "unwindToArea", sender: self)


关于CoreData的AppDelegat.swift:

// MARK: - Core Data stack

lazy var persistentContainer: NSPersistentContainer = 

    let container = NSPersistentContainer(name: "textTabelView")

    ...

我确定我确实正确导入了 CoreData。

项目可以正常构建,但是当我触摸按钮(@IBaction 是)时,控制台中打印了警告并且应用程序崩溃了

我该如何解决?

【问题讨论】:

持久化容器中使用的名称应与 xcdatamodel 文件的名称匹配。 【参考方案1】:

如果您的 NSPersistentContainer 参数的名称与您的 xcdatamodeld 文件的名称不匹配,您会遇到同样的错误。可能的解决方案:

    仔细检查数据模型是否命名为“textTabelView.xcdatamodeld”, 如果名称因某些不可见字符而损坏,请删除旧的 xcdatamodeld 文件并创建一个新文件,或者 clean build app 文件夹(⌥⇧⌘K)(即option+shift+apple+K)。

祝你好运!

【讨论】:

以上是关于Swift 4,CoreData:错误:无法加载名为 textTabelView 的模型的主要内容,如果未能解决你的问题,请参考以下文章

Swift 3 获取请求错误(警告:无法加载任何 Objective-C 类信息)

启用核心数据的项目未加载“CoreData”

谓词不适用于 CoreData - Swift 4

无法保存数据 --- Swift、IOS、Core 数据 --- 线程 1:信号 SIGABRT

swift coredata - 发送到实例的无法识别的选择器

Swift 和 CoreData 与自定义类作为可转换对象