ios - 如何在 swift 中将子类 NSManagedObject 分配给 var (而不是常量)

标签 ios core-data swift nsmanagedobject

我有一个充满 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/

相关文章:

ios - 如何在 iOS 应用程序的 Mapbox 中将 GeoJSON 字典显示为热图

javascript - 带有文件 url 的 WKWebView xmlhttprequest

ios - 更改自定义 tableViewCell 的背景颜色

ios - 向用户显示 iCloud 同步正在进行中

ios - 如何使用 csv 文件有效地初始化 iOS/Core Data 应用程序中的数据?

iphone - 具有额外 ivar 和方法的核心数据管理对象

ios - 自定义本地通知声音不起作用

ios - Xcode 10 : The Image set 'customloading' reference a file "mygif.gif" , 但该文件没有有效的扩展名

ios - 核心数据 : Why reload data must be called to make my app work?

ios - 有没有办法以编程方式更新帧(Swift)