当创建新目标时出现“此类不符合键值编码规范”的错误信息

5

我有一个用Swift完成的iOS大型基础项目。现在我想通过创建新目标来创建不同的客户端版本:

  • BaseProject(只要不更改名称就可以正常工作)
  • Client1(在启动屏幕后会出现NSUnknownKeyException异常)。

基础项目运行良好。但当我切换到新目标时,我会收到以下NSUnknownKeyException异常:

Terminating app due to uncaught exception 'NSUnknownKeyException', 
reason: '[<UIViewController 0x135e57c40> setValue:forUndefinedKey:]: 
this class is not key value coding-compliant for the key textConfirmPassword.'

"textConfirmPassword"是我main.storyboard中文本字段的引用。
  • 我检查了引用输出,但这似乎不是问题所在。
  • 我检查了文本字段的目标成员资格。
  • 我重新创建了输出引用。
  • 我删除了引用,创建了一个硬编码的文本字段,它不会出现在故事板上,只是为了让代码编译。异常转到另一个文本字段(textEmail)。
在做所有这些之前,我使用了一个图像和一个引用标签创建了一个示例项目。版本控制工作得非常好。

如果你确定没有未连接的插座(通过连接检查器进行检查),那么仅仅清理并退出重启Xcode在过去多次为我解决了这个问题。令人惊讶的是,许多Xcode问题都可以通过重新启动来解决。 - Gruntcakes
我已经做过了。我重新创建了所有连接并重启了Xcode。但是没有这样的运气。 - CFlux
3个回答

4

我终于找到了问题所在,我的一些视图控制器在故事板 -> 身份验证检查器 -> 从目标继承模块中没有选择,这就是为什么在新创建的目标中出现错误的原因。

enter image description here

对于视图控制器,请勾选“从目标继承模块”


谢谢,我也遇到了同样的问题,这绝对是解决方案。在找到你的回复之前,我已经抓狂了一两个小时! - Scott D
你好,我也遇到了同样的问题,但实际上,“从目标继承模块”已经被选中,而且插座连接和类别设置也都很好。 - Ridney

4

我找到了问题所在。这是一个非常简单的问题,我不敢相信我花了这么长时间才发现。第一个视图控制器选择了一个模块(实际上不应该有任何模块)。因此,每当我运行不同的目标时,它就无法找到视图的元素。


你完美地描述了我的问题(创建了一个新的目标,旧的可以构建,但新的会因为这个异常而崩溃,但它不是插座(我可以断开它,然后它就会在下一个插座上崩溃)。但我无法理解你的意思。什么是“第一个视图控制器”(根?)什么是“已选择模块”(目标成员资格?) - SimplGy
我曾经遇到过完全相同的问题。感谢您指出。@SimplGy 当您选择一个实现文件时,在Xcode中您可以在“文件检查器”中找到一个名为“目标成员资格”的部分。这就是您的目标应该启用的地方。 - Franklin

0
在我的情况下,我不得不从检查器中为视图本身设置自定义类名。我只设置了文件所有者的类并与其连接,但仍然出现相同的错误。 enter image description here


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