Ios NSEntityDescription.entity崩溃应用程序(SIGABRT)

Ios NSEntityDescription.entity崩溃应用程序(SIGABRT),ios,swift,xcode,core-data,nsentitydescription,Ios,Swift,Xcode,Core Data,Nsentitydescription,包含NSEntityDescription.entity的行正在崩溃,并显示错误 线程1:SIGABRT 我见过其他人问这个问题,建议的答案是简单地从零开始删除并重新创建实体。我已经做了很多次了,我还彻底“清理”了代码,并在我的AppDelegate.swift文件和这个ViewController文件中导入了CoreData。有人有什么建议吗 override func viewDidLoad() { super.viewDidLoad() addGesture() g

包含
NSEntityDescription.entity
的行正在崩溃,并显示错误

线程1:SIGABRT

我见过其他人问这个问题,建议的答案是简单地从零开始删除并重新创建实体。我已经做了很多次了,我还彻底“清理”了代码,并在我的
AppDelegate.swift
文件和这个
ViewController
文件中导入了CoreData。有人有什么建议吗

override func viewDidLoad() {
    super.viewDidLoad()
    addGesture()
    guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else { return }
    let managedContext = appDelegate.persistentContainer.viewContext
    let stringModelEntity = NSEntityDescription.entity(forEntityName: "StringModels", in: managedContext)!
    let stringBundle = NSManagedObject(entity: stringModelEntity, insertInto: managedContext)
    self.getJSON(stringBundle)
    do {
        try managedContext.save()
    } catch let error as NSError {
        print("Could not save. \(error), \(error.userInfo)")
    }
}

编辑


由于最终打开了调试器,我找到了一个解决方案,以下链接的“最佳答案”描述并解决了这个问题:

这意味着它找不到名为“StringModels”的实体。根据我的经验,错误SIGABRT是在程序认为应该存在的东西不存在时产生的


我会检查大小写和拼写。

谢谢你的回答。Model.xcdatamodeld中的实体被列为“StringModels”——与上面指定的完全相同。@mahib当您崩溃时,您能在调试区域内检查“managedContext”常量是否为零吗?managedContext为零,如上面的屏幕截图所示,我通过将名称“StringModels”(即实体名称)改为“Model”修复了错误这是文件Model.xcdatamodeld的名称,包含实体StringModels。请提供崩溃日志。@matt没有崩溃日志,它只是崩溃,没有输出到控制台。好的,但仍有回溯。看见Xcode为您提供了大量有关我们崩溃原因的信息。你需要查看这些信息以了解发生了什么。你是否能够在应用程序的其他地方创建此实体或任何其他实体?在Swift核心数据代码中,我经常忘记的一件事是将实体的类模块(在数据模型编辑器中)设置为当前产品模块。在调试会话中,persistentContainer.storage似乎为零。这与这里相关还是与其他代码相关?也许您向
NSEntityDescription.entity
发送了一个nil托管对象上下文?如果是这样的话,这个bug似乎在你的AppDelegate类中。