Не удается сохранить данные --- Swift, IOS, Core data --- Поток 1: сигнал SIGABRT - PullRequest
0 голосов
/ 08 мая 2018

выход:

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

}
}

Не уверен, что я делаю неправильно, этот точный код работает в другом проекте с тем же именем сущности. Спасибо за вашу помощь :)

EDIT: enter image description here

1 Ответ

0 голосов
/ 08 мая 2018

Пожалуйста, попробуйте добавить префикс имени класса в поле Class инспектора сущности модели к имени вашего модуля, как показано ниже: "PatientRecord.Patient" больше информации здесь указано

Чтобы настроить подкласс Swift NSManagedObject для использования ядром Сущность модели данных, откройте инспектор сущности модели в Xcode, введите имя класса в поле «Класс» и выберите «Модуль текущего продукта» из раскрывающегося списка полей модуля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...