显示UIView子类 - 此类不是键的符合键值编码

时间:2012-06-23 03:04:10

标签: ios uiview

我正在尝试创建一个可以从多个视图控制器调用的自定义弹出视图,但我遇到了一些麻烦。

只要我在viewController本身内编写并调用“presentPopup”方法,我就可以正常工作。而不是在每个VC中编写单独的方法,我更喜欢在一个单独的类中编写一个方法,只是传递参数来个性化它。

无论如何,每当我尝试这样做时,我一直都会得到着名的“这个类不是关键值编码兼容的密钥”错误。只是想知道是否有人对如何使类密钥值编码兼容有任何见解?或者一般如何解决这个问题?谢谢!

2 个答案:

答案 0 :(得分:3)

在这个答案的最后有一个简单的解释,但我最近看到了一些类似的问题,所以我想我会给出一些背景知识。

该错误还应告诉您哪个键该类不符合键值编码。您的问题的措辞表明您认为可以添加一些通用的代码来使类“符合键值编码”。事实并非如此。

所有可可/可可触摸对象都能够执行键值编码操作。 KVC允许您使用valueForKey:setValue:forKey:来访问访问者方法,而不是直接使用访问者方法。

您看到的错误将是:

  

XXX - 此类不是键YYY的键值编码。

XXX是有问题的班级,YYY是关键。所以在某处,[xxx setValue:something forKey:@"YYY"]被调用。

此时,您正在考虑“但我从未在代码中使用过setValue:forKey!”。你或许是正确的。但是,当您加载xib文件时,框架会使用 - 所有出口都是使用键值编码设置的。

因此,您的xib中将有一个插座连接到已在其链接的类中删除或重命名的内容。如果你很幸运,它旁边会有一个感叹号。如果你不是,你甚至不会在界面构建器中看到它,你必须编辑xib作为源代码并将其从XML中删除。

答案 1 :(得分:0)

您正在某个地方调用setValue:forKey:方法(可能在NSMutableDictionary上调用setObject:forKey)或类似内容......