我正试图在本教程here中快速制作todo应用程序,当我到达大约5分钟时,我运行应用程序并得到:
**由于未捕获的异常'NSUnknownKeyException'终止应用程序,原因:'[setValue:forUndefinedKey:]:此类不是键值notesTestView的密码值编码。'
我已经看到其他一些用户得到了这个,但没有明确的修复。我一直在寻找大约三天的时间来试图解决这个问题。
它与titleTextField和notesTextView变量有关。每当我使用'!'时在声明它们时,当我点击应用程序中的“+”时,Xcode会给我这个错误。如果我不使用'!',Xcode不会让我编译。如果我不使用'?'或'!',Xcode不允许我编译。有什么想法吗?
我试图将变量声明如下(Xcode默认值):
@IBOutlet var titleTextField: UITextField!
@IBOutlet var notesTextView: UITextView!
并像这样访问它们:
@IBAction func addButtonTapped(sender: AnyObject) {
var dataSet:NSMutableDictionary = NSMutableDictionary()
dataSet.setObject(titleTextField.text, forKey: "itemTitle")
dataSet.setObject(notesTextView.text, forKey: "itemNote")
}
答案 0 :(得分:1)
错误告诉您问题所在:您正在尝试使用键值编码来设置名为" khvj"的键的值。在没有名为" khvj"。
的键的对象上所以问题不在你看的地方。
在你正在经过的某个地方寻找setValue(value:forKey:)
的电话" khvj"作为关键参数。然后检查您正在调用该方法的对象是否具有名为" khvj"的属性。
如果你自己没有调用setValue(value:forKey:)
,那么它可能会被自动调用,作为从xib或storyboard文件加载的对象的一部分。检查以确保在你的xib或storyboard文件中你没有尝试将任何插座连接到一个属性" khvj"实际上并不存在。
答案 1 :(得分:0)
"此类不是密钥值编码兼容的密钥khvj"
这通常来自引用错误。例如,如果您意外地从一个标签或其他UI对象中有两个IBOutlet,则会使编译器混淆并导致错误。在故事板中选择对象后,进入实用程序面板并在Connections检查器上进行陈词滥用。它会告诉你出口。例如,查看一个标签是否有两个不同的插座。
答案 2 :(得分:0)
该错误通常意味着IBOulet存在问题,或IBAction与它们挂钩 - 通常是缺少连接或名称中的拼写错误。这是一个名为“khvj”的属性或方法的错误 - 无论在项目中的哪个地方......
本教程还使用UITableViewController&的自定义子类。其他ViewController - 您需要确保在故事板中正确设置自定义类,否则视图控制器将不知道它们应该包含自定义方法&你添加的网点。
最后,在~5:00之后的同一个教程中,您需要初始化UITextFields,否则当您尝试从中获取文本时它们不存在。使用显式!
说“这绝对是一个非零的UITextField”,但如果它实际上是零,那就是一个问题。
@IBOutlet var titleTextField: UITextField = UITextField()
@IBOutlet var notesTextView: UITextView = UITextField()