无法保存数据--- Swift,IOS,核心数据---线程1:信号SIGABRT

时间:2018-05-08 14:48:39

标签: ios swift core-data save sigabrt

输出:

  

2018-05-08 10:43:35.852689-0400 PatientRecord [37013:6040121] [错误]   错误:无法加载名为PatientRecord CoreData的模型:错误:   无法加载名为PatientRecord 2018-05-08的模型   10:43:35.864686-0400 PatientRecord [37013:6040121] ***终止应用   由于未捕获的异常'NSInvalidArgumentException',原因:   '+ entityForName:nil不是合法的NSManagedObjectContext参数   搜索实体名称'患者''

我的断点表明它崩溃了:let entity = NSEntityDescription ...

import UIKit
import CoreData

class CoreDataHandler: NSObject {

private class func getContext() -> NSManagedObjectContext{

    let appDelegate = UIApplication.shared.delegate as! AppDelegate

    return appDelegate.persistentContainer.viewContext

}

class func saveObject(onset: String, name: String, headache: String) -> Bool {

    let context = getContext()
    let entity = NSEntityDescription.entity(forEntityName: "Patient", in: context)
    let manageObject = NSManagedObject(entity: entity!, insertInto: context)

    manageObject.setValue(onset, forKey: "onset")
    manageObject.setValue(name, forKey: "name")
    manageObject.setValue(headache, forKey: "headache")

    do{
        try context.save()
        return true
    }catch{
        return false
    }
}

class func fetchObject() -> [Patient]? {
    let context = getContext()
    var patient:[Patient]? = nil
    do{
        patient = try context.fetch(Patient.fetchRequest())
        return patient
    }catch{
        return patient
    }
}


}

主要课程

import UIKit
//import CoreData

class AbdominalPainViewController: ViewController {

 var patient:[Patient]? = nil

override func viewDidLoad() {
    super.viewDidLoad()

    CoreDataHandler.saveObject(onset: "OnsetLabeltext", name: "PatientNLabelext", headache: "woo")

        patient = CoreDataHandler.fetchObject()

        for i in patient! {
            print(i.name!)
        }

}
}

不确定我做错了什么,这个确切的代码在不同的项目中工作,具有相同的实体名称。谢谢你的帮助:))

编辑: enter image description here

1 个答案:

答案 0 :(得分:0)

请尝试使用模块名称在模型实体检查器的Class字段中为类名添加前缀,如下所示:"PatientRecord.Patient" 更多信息here陈述

  

配置NSManagedObject的Swift子类以供Core使用   数据模型实体,在Xcode中打开模型实体检查器,进入   将类名添加到“类”字段中,然后选择“当前产品模块”   从“模块”字段下拉列表中。