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

Posted

技术标签:

【中文标题】无法保存数据 --- Swift、IOS、Core 数据 --- 线程 1:信号 SIGABRT【英文标题】:Cannot save data --- Swift, IOS, Core data --- Thread 1: signal SIGABRT 【发布时间】:2018-05-08 14:48:38 【问题描述】:

输出:

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!)
        



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

编辑:

【问题讨论】:

请告诉我们你的.xcdatamodel里有什么? 我已经在编辑中添加了图片 【参考方案1】:

请尝试在模型实体检查器的 Class 字段中的类名称前加上您的模块名称,就像这样:"PatientRecord.Patient" 更多信息here 声明

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

【讨论】:

还是同样的问题 :(

以上是关于无法保存数据 --- Swift、IOS、Core 数据 --- 线程 1:信号 SIGABRT的主要内容,如果未能解决你的问题,请参考以下文章

保存在 Core Data 中的 iOS 数据在启动后无法保存

如何在 Swift 中将可转换属性保存到 Core Data

Swift 3 Core Data - 如何同步保存上下文?

如何在 Core Data iOS Swift 中删除和更新结构类型数组?

在 Swift 中的 Core Data 中保存数据

Core Data 使用 Swift 保存数据