作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个充满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 方法。类(class),如果有人能帮忙的话
最佳答案
问题是 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/
我是一名优秀的程序员,十分优秀!