我尝试在我的Main.Storyboard上添加一个插座,然后用CTRL +将它拖到相应的视图控制器中。
class LoginViewController: UIViewController {
@IBOutlet weak var nameField: UITextField!
}
执行此操作后,我收到此错误
Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<UIViewController 0x7f7ff051e860> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key nameField.'
可能导致此问题的原因是什么?
答案 0 :(得分:2)
这里的问题是它创建了UIViewController
的实例,而不是LoginViewController
的实例。您可以告诉,因为错误消息显示的是<UIViewController 0x7f7ff051e860>
,而不是<LoginViewController 0x7f7ff051e860>
。由于UIViewController
没有nameField
插座,因此当故事板加载程序尝试连接该插座时会出现错误。
有两种可能的解释:
故事板中的自定义类未设置为LoginViewController
。在故事板中选择场景中的视图控制器。从菜单栏中选择查看&gt;公用事业&gt;显示Identity Inspector。然后,在Identity Inspector(右侧窗格)中,确保该类设置为LoginViewController
。
如果Xcode允许您连接插座,则必须在某个时刻设置自定义类。但是你可能在之后不小心撤消了这一改变。
包含LoginViewController
源代码的文件不是您的目标(您的应用)的一部分。在这种情况下,调试控制台中应该有更早的消息,如下所示:
2016-02-08 22:08:04.569 test[3049:9594499] Unknown class _TtC4test16MyViewController in Interface Builder file.
要解决此问题,请打开LoginViewController.swift
文件(或包含该类的任何文件)。从菜单栏中选择查看&gt;公用事业&gt;显示文件检查器。在文件检查器(右侧窗格)中,找到目标成员资格部分,然后打开应用旁边的复选框。
答案 1 :(得分:0)