Ios 如何在swift中将子类NSManagedObject分配给var(与常量相反)
我得到了一个实例变量数组,其中包含从Ios 如何在swift中将子类NSManagedObject分配给var(与常量相反),ios,core-data,swift,nsmanagedobject,Ios,Core Data,Swift,Nsmanagedobject,我得到了一个实例变量数组,其中包含从NSManagedObject子类化的Juice对象,从NSFetch检索 我这样设置了UITableViewCell标题,没有问题: let currentJuice = juiceList[indexPath.row] cell.text = currentJuice.name 但是,我试图在视图控制器之间传递Juice的实例。我声明了一个实例变量var selectedJuice=Juice()variable,然后在willselectrowati
NSManagedObject
子类化的Juice
对象,从NSFetch
检索
我这样设置了UITableViewCell
标题,没有问题:
let currentJuice = juiceList[indexPath.row]
cell.text = currentJuice.name
但是,我试图在视图控制器之间传递Juice
的实例。我声明了一个实例变量var selectedJuice=Juice()
variable,然后在willselectrowatinexpath
I中放入:
selectedJuice = juiceList[indexPath.row]
这一行抛出错误
CoreData:error:调用NSManagedObject类上指定的初始值设定项失败
,我不知道为什么!我也不知道如何在Juice
类中实现指定的init方法,如果有人可以帮助实现该方法,问题是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
)。啊,我明白了。我很确定问题出在Juice()。谢谢你,马丁!