设置关系(核心数据)内的属性的值时,“无法在NSManagedObject类上调用指定的初始化程序”

我正在尝试使用.setvalue(value:,forKeyPath:)方法更新Core Data模型的某些属性。在我的模型中,我有一个名为“ Alumno”的实体,该实体具有与另一个名为“ Especialidad”的实体相关的名为“ especialidadRelacionada”的属性。这是多对一的关系,因为“校友”只能有一个“特殊”,尽管“特殊”可以与许多“校友”匹配。 “特殊”实体也具有“标称”作为其主要属性。这是从Xcode生成的两个快速文件,它们来自开发人员文件夹的内部:

extension Alumno {

    @nonobjc public class func fetchRequest() -> NSFetchRequest<Alumno> {
        return NSFetchRequest<Alumno>(entityName: "Alumno")
    }

    @NSManaged public var correo: String?
    @NSManaged public var foto: Data?
    @NSManaged public var movil: String?
    @NSManaged public var nombre: String?
    @NSManaged public var repertorio: String?
    @NSManaged public var cursoRelacionado: Curso?
    @NSManaged public var ensayosRelacionados: NSSet?
    @NSManaged public var especialidadRelacionada: Especialidad?
    @NSManaged public var tutorRelacionado: Tutor?

}


extension Especialidad {

    @nonobjc public class func fetchRequest() -> NSFetchRequest<Especialidad> {
        return NSFetchRequest<Especialidad>(entityName: "Especialidad")
    }

    @NSManaged public var nombre: String?
    @NSManaged public var alumno: NSSet?
    @NSManaged public var obra: NSSet?

}

我从用户输入的文本字段中获得要设置的“特殊”字符串:

@IBOutlet weak var especialidadField: UITextField!

但是,当我尝试使用用户写入的字符串更新“特殊”数据(以前完全没有问题地保存到Core Data)时:

    let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
    alumno?.setvalue(especialidadField.text,forKey: "especialidadRelacionada.nombre")
do {
    try context.save()
    } catch {
    ...
}

我收到此错误:“无法在NSManagedObject类上调用指定的初始化程序”。似乎我的“ forKey”字符串有问题,但经过大量时间在互联网上搜索后,我找不到它。

谢谢!

iCMS 回答:设置关系(核心数据)内的属性的值时,“无法在NSManagedObject类上调用指定的初始化程序”

var alumno: Alumno?
var esNuevo: Bool = true
let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
var especialidadSeleccionada: Especialidad?
var cursoSeleccionado: Curso?
var tutorSeleccionado: Tutor?
本文链接:https://www.f2er.com/1647062.html

大家都在问