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

use*_*841 8 iphone xcode objective-c

 UIStoryboard*  sb = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
    UIViewController* vc = [sb instantiateViewControllerWithIdentifier:@"SettingsViewController"];
    [[self navigationController] pushViewController:vc animated:YES];
Run Code Online (Sandbox Code Playgroud)

试图从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:终止叫做抛出一个异常

mam*_*luc 42

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

xcode界面构建器的屏幕截图


Vis*_*hal 1

使用这个并检查:

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

  • 这是更好的代码,但不能解决问题。只要您不打算调用 SettingsViewController 上定义的任何方法,就可以将 vc 声明为通用视图控制器。 (2认同)