Swift setValue:forUndefinedKey:]: 这个类不符合键值编码的要求,无法为该键设置值。

17
我从我的Xcode项目中手动删除了Alamofire POD,自那以后,在一些UIViewControllers上添加任何UIButtonIBOutlet时都会出现错误。
我遇到了以下错误:

Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[ setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key btListOrdo

我尝试创建一个新的UIViewController并将其链接到我的StoryBoard,但是我仍然遇到相同的错误...
我正在添加以下IBOutlet
@IBOutlet weak var btListOrdo: UIButton!

请注意,在POD移除之前,这些链接正常工作,可能是我删除了一些必要的内容,但我无法找到它。
这是我的按钮引用插座的屏幕截图:

enter image description here

我也尝试过清理项目,清理构建文件夹,删除派生数据,重置模拟器的内容和设置,但结果仍然相同...


1
你在项目中使用 ⇧⌘F 和关键词 btListOrdo 进行过搜索吗? - vadian
如果存在死连接,请在 Interface Builder 中查看。 - vadian
尝试删除引用并重新创建它。 - Larme
没有人能帮我吗?也许我可以根据我的源代码重新创建一个新项目? - tiamat
我终于解决了我的问题(或者至少找到了一个解决方法),通过删除ViewController并创建一个新的... - tiamat
显示剩余6条评论
7个回答

48

好的,我刚遇到了同样的问题,原因是存在多个目标。我无法弄清楚为什么在某些情况下可以完美运行,而在其他情况下却不能。实际上问题出在视图控制器的模块定义上,我猜想这可能是为什么当您完全重新创建控制器时问题似乎会神奇地解决。在我的项目中,我将模块设置为我的一个目标,所以当我运行第二个目标时它就不相关。如果您有多个目标,请确保清空在Storyboard上崩溃的VC的模块框并勾选从目标继承模块。

希望这可以帮助

输入图像描述


1
这对我也起作用了,但请记住,您还必须检查所有的xib文件,而不仅仅是storyboard :) - Marcin Żmigrodzki
2
经过4个小时的努力和多次尝试,这个复选框解决了我的问题。这是因为我从另一个项目中复制了一个视图控制器,其目标指向原始视图控制器而不是我的当前项目。 - Bharat Lalwani

10

如果您勾选了继承完成复选框,则应检查日志警报中的密钥,或在源代码中查找并在警报用户界面中删除。

在同一张图片中。

请尝试检查。

如果您发现警报与同一张图片相同,请将其删除。

输入图像描述


这个答案帮了我。我在滑块条的名称上打了一个错别字。我改变了输出口的名称,尽管在“连接检查器”中的连接名称没有改变。在 IB 中重新连接它可以解决这个问题。 - Zhou Haibo

7

确保你的类和在Storyboard中使用的一致

在这里输入图片描述


0

只是想提供我的意见,我解决这个错误的方法是检查我的引用插座,并确保没有任何一个插座是漂浮的,没有连接到任何东西。我认为 Swift 编译器对此感到不满。


1
嗨,Jon!我只是想让你知道,这更适合作为原始帖子的评论,而不是答案。要么就提供更详细的完整答案。 - grahamcracker1234
1
哦,我懂了,我猜人们不喜欢你不知道事情是怎么工作的,哈哈。谢谢你的提示! - Jon F

0

我移除了按钮代理,问题得到了解决,问题出在按钮代理上。请查看此图片。

Image


0

如果您有多个目标,请检查您是否为所有源文件选择了所需的目标成员身份。这也可能引发此类异常。


0

我在使用流行的Rswift库来呈现使用nib的视图控制器时遇到了同样的问题。

所以我只需要替换

let productCardVC = ProductActionVC(nib: R.nib.productCardVC)

使用

let productCardVC = ProductCardVC(nibName: "ProductCardVC", bundle: nil)

然后一切开始完美地运作


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接