Ios @Swift中的ibs

Ios @Swift中的ibs,ios,xcode,swift,var,Ios,Xcode,Swift,Var,我正试图根据本教程在swift中制作一个todo应用程序,当我到达5分钟左右时,我运行该应用程序并获得: **由于未捕获的异常“NSUnknownKeyException”而终止应用程序,原因:“[setValue:forUndefinedKey:]:此类不符合key notesTestView的键值编码。” 我已经看到一些其他用户得到了这一点,但没有明显的修复。我已经搜索了大约三天,现在试图找出这个问题 它与titleTextField和notesTextView变量有关。每当我使用“!”时声

我正试图根据本教程在swift中制作一个todo应用程序,当我到达5分钟左右时,我运行该应用程序并获得:

**由于未捕获的异常“NSUnknownKeyException”而终止应用程序,原因:“[setValue:forUndefinedKey:]:此类不符合key notesTestView的键值编码。”

我已经看到一些其他用户得到了这一点,但没有明显的修复。我已经搜索了大约三天,现在试图找出这个问题

它与titleTextField和notesTextView变量有关。每当我使用“!”时声明它们时,当我单击应用程序中的“+”时,Xcode会给我这个错误。如果我不使用“!”,Xcode不允许我编译。如果我不使用“?”或“!”,Xcode不允许我编译。有什么想法吗

我正试图按如下方式声明变量(Xcode默认值):

然后像这样访问它们:

@IBAction func addButtonTapped(sender: AnyObject) {

    var dataSet:NSMutableDictionary  = NSMutableDictionary()
    dataSet.setObject(titleTextField.text, forKey: "itemTitle")
    dataSet.setObject(notesTextView.text, forKey: "itemNote")

}
“此类不符合密钥khvj的键值编码”


这通常来自引用错误。例如,如果您无意中从一个标签或其他UI对象中获得了两个IBoutlet,这会混淆编译器,并导致错误。在情节提要中选择一个对象后,进入连接检查器上的实用程序面板和clicl。它会告诉你出口。例如,查看一个标签是否有两个不同的出口。

错误告诉您问题是什么:您试图使用键值编码在没有键值“khvj”的对象上设置名为“khvj”的键值

所以问题不在于你在找什么

在传递“khvj”作为关键参数的地方,查找对
setValue(value:forKey:)
的调用。然后检查调用该方法的对象是否具有名为“khvj”的属性


如果您自己没有调用
setValue(value:forKey:)
,那么它可能是在从xib或故事板文件加载对象的过程中自动调用的。检查以确保在您的xib或故事板文件中,您没有试图将任何插座连接到实际上已不存在的属性“khvj”。

该错误通常意味着IBOulet或连接到它们的iAction有问题-通常是缺少连接或名称中的键入错误。这是一个名为“khvj”的属性或方法的错误-无论该属性或方法在项目中的何处

本教程还为UITableViewController和其他ViewController使用自定义子类-您需要确保在情节提要中正确设置了自定义类,否则ViewController将不知道它们应该包含您添加的自定义方法和输出

最后,在5:00完成相同的教程之后,您需要初始化UITextFields,否则当您尝试从它们获取文本时,它们不存在。使用显式的
表示“这肯定是一个非nil UITextField”,但如果它实际上是nil,那就是一个问题

@IBOutlet var titleTextField: UITextField = UITextField()
@IBOutlet var notesTextView: UITextView  = UITextField()

我刚刚检查了一下,它们都是有序的:/还有其他想法吗?如果您有一个名为fir a storyboard view的错误类,也可能发生这种情况。可能类名是MyClass,但在实用程序检查器中,它被列为ViewController。但这是某种类型的引用错误。或者检查你是否有遗漏的参考资料。如果你发到github,我可以帮你看一看并确定它的位置。给我几分钟,如果你能看一看,那就太棒了!我明白你的意思,我确实去掉了一些我曾经拥有的垃圾商店,但现在它说:“这个类不符合key notesTestView的键值编码。”“notesTextView”。这就是您的问题。基本上,每当运行时抱怨某个给定密钥不符合KVC时,您或xib反序列化机制都在寻找该对象上不存在的密钥。这可能是IB中一个过时的出口,也可能是你的拼写错误。就是这样。我觉得自己真的很傻:/非常感谢你。当徒步穿越一片新的森林时,总是很难知道哪棵树是重要的!
@IBOutlet var titleTextField: UITextField = UITextField()
@IBOutlet var notesTextView: UITextView  = UITextField()