错误:此类不是密钥keyPath的密钥值编码兼容

时间:2013-02-18 03:48:03

标签: iphone objective-c xcode

 UIStoryboard*  sb = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
    UIViewController* vc = [sb instantiateViewControllerWithIdentifier:@"SettingsViewController"];
    [[self navigationController] pushViewController:vc animated:YES];

尝试从Storyboard中的NavigationController推送视图控制器,我不断收到此错误。

  

*由于未捕获的异常'NSUnknownKeyException'而终止应用程序,原因:'[< SettingsViewController 0x1f98f100> setValue:forUndefinedKey:]:此类不是密钥keyPath的密钥值编码兼容。   * 第一次抛出调用堆栈:   (0x31f4a3e7 0x39c3b963 0x31f4a0d5 0x327b87d9 0x327b4543 0x31ed08a5 0x33ef5e69 0x340e5b09 0x71aa3 0x33e1b31d 0x33e9dda9 0x32859657 0x31f1f857 0x31f1f503 0x31f1e177 0x31e9123d 0x31e910c9 0x35a6f33b 0x33dad2b9 0x6567d 0x3a068b20)   libc ++ abi.dylib:terminate调用抛出异常

4 个答案:

答案 0 :(得分:41)

我收到了这个错误,因为我在"用户定义的运行时属性"中添加了一些内容。 "身份检查员"中的字段标签。通过mystake,我保留了Key Path列的默认keyPath值,这导致了问题。

Screenshot from xcode interface builder

答案 1 :(得分:4)

最有可能的是,故事板中定义的SettingsViewController包含对名为keyPath的IBOutlet的引用,但未在类中定义keyPath。

要解决此问题,请在故事板中选择视图控制器,选择连接检查器(右窗格中的最右侧选项卡),然后查看连接。可能有一个名为keyPath,它可能有一个“!”靠近它。删除那个(和其他任何“!”)。

答案 2 :(得分:1)

使用此&检查:

UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
 SettingsViewController *myVC = (SettingsViewController *)[mainStoryboard instantiateViewControllerWithIdentifier:@"SettingsViewController"];
[self.navigationController pushViewController:myVC animated:YES];

答案 3 :(得分:0)

右键单击xib文件,打开源代码以找到" keyPath"。