我有一个充满 Juice
的实例变量数组从 NSManagedObject
子类化的对象,取自NSFetch
.
我设置了UITableViewCell
像这样的标题,没有问题:
let currentJuice = juiceList[indexPath.row]
cell.text = currentJuice.name
但是,我正在尝试传递 Juice
的实例 View Controller 之间。我声明一个实例变量 var selectedJuice = Juice()
变量,然后在willSelectRowAtIndexPath
中我输入:
selectedJuice = juiceList[indexPath.row]
此行抛出错误 CoreData: error: Failed to call designated initializer on NSManagedObject class
我不明白为什么!我也不知道如何实现Juice
中指定的init方法类,如果有人可以帮忙的话
最佳答案
问题是 Juice()
创建了一个 Juice 对象而不使用指定的
NSManagedObject
的初始化程序。实际上你不需要分配默认值
属性(property)的值(value)。
您应该将该属性声明为可选
var selectedJuice : Juice? // (1)
或隐式解包可选
var selectedJuice : Juice! // (2)
然后分配
selectedJuice = juiceList[indexPath.row]
应该可以正常工作。
在第一种情况 (1) 中,您可以通过以下方式访问该属性
if let theJuice = selectedJuice {
// ...
} else {
// no Juice selected
}
在第二种情况 (2) 中,您可以简单地访问属性 selectedJuice
,
如果未设置 (nil
),则会出现运行时异常。
关于ios - 如何在 swift 中将子类 NSManagedObject 分配给 var (而不是常量),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24560044/