【问题标题】:Edit UITableViewCell pulling data from CoreData编辑 UITableViewCell 从 CoreData 提取数据
【发布时间】:2018-07-15 22:28:12
【问题描述】:

我正在尝试使用

从 UITableView 中的选定单元格中提取我的信息
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if let resultant = segue.destination as? EditViewController {
        resultant.intention = intentionsArray[(intentionsTable.indexPathForSelectedRow?.row)!]
    }

}

我的 EditViewController 代码是

var intention:EIntentions?

我不断收到以下错误(EIntentions 是我的实体,eIntentionCell 是我的字符串属性)

无法将类型“NSManagedObject”的值分配给类型“EIntentions?”

我从 CoreData 获取数据的数组是

var intentionsArray: [NSManagedObject] = []

我知道这是 NSManagedObject 数组的错误。本质上,我试图将选定单元格的文本传递给 EditViewController 中的文本字段。我就是想不通我做错了什么。

【问题讨论】:

  • 错误提示 EIntentions 不是 NSManagedObject 的子类 - 你是如何创建该类的?它是由 Core Data 模型自动创建的吗?
  • 这里是CoreData截图的链接。当我将 CoreData 添加到我的项目时,我自己创建了 `EIntentions`。 @Pawlw11 dropbox.com/s/l65r8ygy7xl1w97/…
  • 在核心数据模型中创建实体后,它应该为您生成实体类。似乎该过程可能存在问题,因为它告诉您 EIntentions 类不是 NSManagedObject 子类。尝试删除您的派生数据文件夹
  • @Paulw11 我做到了,但由于某种原因仍然收到错误
  • 如果您在 Xcode 中打开 EIntentions 的上下文菜单(右键单击)并选择“跳转到定义”,它会显示什么?

标签: ios swift uitableview core-data nsmanagedobject


【解决方案1】:

好的,所以你有

var intentionsArray: [NSManagedObject] = []

这是 NSManagedObject 的数组。 EditViewController 期待 EIntentions 对象。

无论哪种方式,EIntentions 和 NSManagedObject 都是完全不同的对象,这就是您收到此错误的原因。你必须初始化

var intentionsArray: [EIntentions] = []

让它像你想要的那样工作。如果你已经正确地创建了 EIntentions,那么从数据库中获取 EIntentions 对象将会很顺利,一切都会正常进行

【讨论】:

  • 有效!谢谢!现在我可以回到我一直想要永远完成的事情了。
猜你喜欢
  • 1970-01-01
  • 2020-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多