在 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中的行中的标签