我有一个完整的Juice
个对象的实例变量数组,这些对象是NSManagedObject
的子类,是从NSFetch
检索的。
我像这样设置UITableViewCell
标题,没有问题:
let currentJuice = juiceList[indexPath.row]
cell.text = currentJuice.name
但是,我试图在视图控制器之间传递Juice
的实例。我声明了一个实例变量var selectedJuice = Juice()
变量,然后在我放的willSelectRowAtIndexPath
中:
selectedJuice = juiceList[indexPath.row]
此行引发错误CoreData: error: Failed to call designated initializer on NSManagedObject class
,我无法弄清楚原因!我也不知道如何在Juice
课程中实现指定的init方法,如果有人可以帮助那个
答案 0 :(得分:5)
问题是Juice()
在不使用指定的情况下创建了Juice对象
NSManagedObject
的初始化程序。实际上,您不需要分配默认值
物有所值。
您应该将该属性声明为可选
var selectedJuice : Juice? // (1)
或隐式展开的可选
var selectedJuice : Juice! // (2)
然后分配
selectedJuice = juiceList[indexPath.row]
应该没有问题。
在第一种情况(1)中,您将以
的身份访问该属性if let theJuice = selectedJuice {
// ...
} else {
// no Juice selected
}
在第二种情况(2)中,您将以selectedJuice
为单位访问该属性,
如果未设置(nil
),则会收到运行时异常。