接口构建器问题:连接 IBOutlet 时,获取“此类与键的键值编码不兼容”

Posted

技术标签:

【中文标题】接口构建器问题:连接 IBOutlet 时,获取“此类与键的键值编码不兼容”【英文标题】:Interface builder problem: When hooking up an IBOutlet, getting "this class is not key value coding-compliant for the key" 【发布时间】:2010-05-05 11:36:31 【问题描述】:

这是我的工作:

1) 创建新的 UIViewController 子类,在界面生成器中勾选 NIB

2) 在标题中:

@interface QuizMainViewController : UIViewController 

    UILabel* aLabel;
 

@property (nonatomic, retain) IBOutlet UILabel* aLabel;

@end

3) 在.m中

#import "QuizMainViewController.h"    

@implementation QuizMainViewController

@synthesize aLabel;

- (void)dealloc 

    [aLabel release];
    [super dealloc];


@end

4) 打开NIB In interface builder,将一个新的UILabel拖到视图中。

我在这里测试了程序,它运行良好。

5) 右键单击​​文件的所有者,将“aLabel”从 Outlets 连接到 UILabel。

我在这里运行,它崩溃了。来自日志的消息:

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

【问题讨论】:

我登录只是为了将它加一并说“谢谢!” 【参考方案1】:

我已经解决了这个问题!

视图是从标签栏控制器加载的,我已将 nib 名称设置为“QuizMainViewController”,但我没有将视图的类标识设置为“QuizMainViewController”,它停留在默认值“UIViewController”。

当视图被加载时,它认为它是 UIViewController 的一个实例,因此它不知道 aLabel 属性。

故事的寓意:使用标签栏控制器时,为拥有自己的视图控制器的 nib 设置 nib 名称和类标识。

【讨论】:

【参考方案2】:

试试:

@interface QuizMainViewController : UIViewController 

    IBOutlet UILabel* aLabel;
 

据说,您不再需要在 Objective-C 2.0 中执行此操作,但我在 iPhone 上遇到了问题,将其排除在外。

编辑:

你可以尝试改变

@property (nonatomic, retain) IBOutlet UILabel* aLabel;

@property (nonatomic, retain) IBOutlet UILabel *aLabel;

不过,不要认为这很重要。编译器通常可以解决这个问题。

编辑01:

在 IB 中,确保视图控制器的类设置为 QuizManViewController 而不仅仅是 UIView

【讨论】:

感谢您的建议,但没有奏效。我一直为此生气,我尝试将其全部删除并重新开始,但没有任何效果,啊!

以上是关于接口构建器问题:连接 IBOutlet 时,获取“此类与键的键值编码不兼容”的主要内容,如果未能解决你的问题,请参考以下文章

接口生成器、@IBOutlet 以及 Swift 中委托和数据源的协议

将 IBOutlet 按钮放入数组时发出警告

如何将 IBOutlet 值从视图传递到 VIPER iOs 中的交互器?

无法在 Interface Builder 中连接 IBOutlet

UIImageView 的 UIImage 为 nil

无法连接 UITableViewCell 自定义单元格 IBOutlet