【发布时间】:2020-08-30 19:41:20
【问题描述】:
我现在尝试了几天(没有成功)在核心数据上保存实体(“Alumno”)的一些属性,然后在它的“子”视图控制器(“Especialidad”)上保存其相关值。
Mine 是一款音乐教学应用,就像联系人应用一样。我将选定的“Especialidad”(本例中的演奏乐器)保存到 Core Data 后,从其表格视图中传递相应的“segue”
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
especialidadSeleccionada = especialidades[indexPath.row]
performSegue(withIdentifier: "GuardarEspecialidad", sender: self)
}
对于其相关的“父级”,完整的学生数据,包含此“Especialidad”以及其他属性。
接下来,我尝试将每个学生的数据保存在 Core Data 上:
if nombreField.text != "" && especialidadField.text != "" {
let context = (UIApplication.shared.delegate as!
AppDelegate).persistentContainer.viewContext
let nuevoAlumno = Alumno(context: context)
nuevoAlumno.nombre = nombreField.text!
print("Data before: \(especialidadSeleccionada)")
nuevoAlumno.especialidadRelacionada?.nombre = especialidadSeleccionada?.nombre
print("Data after: \(nuevoAlumno.especialidadRelacionada?.nombre)")
//... and so on with the rest of properties
do {
try context.save()
} catch {
print("error")
}
但它会保存除“nuevoAlumno.especialidadRelacionada?.nombre”之外的所有属性,标记为 nill。如您所见,出于调试目的,我在相等之前打印它的值,获得一个非可选值,然后在它之后,获得......一个可选值!
我几乎可以肯定这一定与他们的关系有关。我已经仔细检查了“Especialidades”的确切数据是否正确,但我真的找不到在这个“Alumno”实体中保存“especialidad.nombre”的方法......
一个想法:也许对“Alumnos”的该属性使用“didSet”可能会有所帮助?我试过了,不知道怎么弄。
有什么帮助吗?提前致谢!
【问题讨论】:
标签: swift core-data relationship optional-parameters