输出:
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!)
}
}
}
不确定我做错了什么,这个确切的代码在不同的项目中工作,具有相同的实体名称。谢谢你的帮助:))
答案 0 :(得分:0)
请尝试使用模块名称在模型实体检查器的Class字段中为类名添加前缀,如下所示:"PatientRecord.Patient"
更多信息here陈述
配置NSManagedObject的Swift子类以供Core使用 数据模型实体,在Xcode中打开模型实体检查器,进入 将类名添加到“类”字段中,然后选择“当前产品模块” 从“模块”字段下拉列表中。