在 Swift 3(核心数据)中引用实体属性

Posted

技术标签:

【中文标题】在 Swift 3(核心数据)中引用实体属性【英文标题】:Referencing Entity Attribute in Swift 3 (Core Data) 【发布时间】:2017-02-14 02:06:07 【问题描述】:

我正在学习一个非常简单的快速课程,虽然一切都适用于讲师,但相同的代码并没有在我这边执行,我试图理解为什么会发生这种情况。

该应用程序非常简单,只需将任务添加到 TableView 中,并带有名称和开关以确定它们是否重要(在这种情况下,名称中会添加一个表情符号)

在尝试访问和修改我的“Taskentity”核心数据实体的“name”属性时,编辑器给了我错误““Taskentity”类型的值没有成员“name””。

代码如下:

import UIKit

class AddTaskViewController: UIViewController 

@IBOutlet weak var textField: UITextField!

@IBOutlet weak var isImp: UISwitch!

override func viewDidLoad() 
    super.viewDidLoad()

    // Do any additional setup after loading the view.


@IBAction func btnTapped(_ sender: Any) 

    let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext

    let task = Taskentity(context: context)
    task.name = textField.text! // **!error!**

    task.isImportant = isImp.isOn

    (UIApplication.shared.delegate as! AppDelegate).saveContext()

    navigationController!.popViewController(animated: true)

我的核心数据文件如下所示:

感谢您的帮助!

【问题讨论】:

【参考方案1】:

您的屏幕截图完美地显示了问题。您已将属性命名为 corename,而不是 name。所以name这个名字自然不是它的名字!

【讨论】:

【参考方案2】:

你的属性有问题。标题为 'corename' 的字符串应该重命名为 'name' Xcode 无法分辨 .name 的含义,因为您没有任何东西可以让 Devi 得到它的含义。

我附上了您的代码应该如何解决这个问题:

import UIKit

class AddTaskViewController: UIViewController 

@IBOutlet weak var textField: UITextField!

@IBOutlet weak var isImp: UISwitch!

override func viewDidLoad() 
    super.viewDidLoad()

// Do any additional setup after loading the view.


@IBAction func btnTapped(_ sender: Any) 

let context = (UIApplication.shared.delegate as!     AppDelegate).persistentContainer.viewContext

let task = Taskentity(context: context)
task.corename = textField.text! // **!error!**

task.isImportant = isImp.isOn

(UIApplication.shared.delegate as! AppDelegate).saveContext()

navigationController!.popViewController(animated: true)


【讨论】:

以上是关于在 Swift 3(核心数据)中引用实体属性的主要内容,如果未能解决你的问题,请参考以下文章

使用核心数据swift ios将实体的所有属性获取到tableview中的行中的标签

使用核心数据swift ios获取实体的所有属性到tableview中的行中的标签

核心数据:迁移具有自引用属性的实体

如何快速比较核心数据中同一实体的两个属性值

NSSortDescriptor 使用实体的 NSDate 属性(Swift)

核心数据 Swift 3 关系