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()。谢谢你,马丁!