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

时间:2017-02-14 02:06:08

标签: ios swift core-data swift3

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

该应用程序非常简单,包括向具有名称和开关的TableView添加任务以确定这些是否重要(在这种情况下,表情符号中添加了表情符号)

尝试访问和修改"名称"我和#34; Taskentity"的属性核心数据实体,编辑器给我错误"类型的价值" Taskentity"没有会员"名称""。

代码如下:

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)
}

}

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

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

您的属性存在问题。标题为'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)
}
}