删除了一个nib文件,现在获得“class not key value coding compliant”错误

时间:2011-09-18 23:24:54

标签: objective-c ios

我有一个UIViewController子类,曾经有一个关联的nib文件。我已经删除了nib文件并更改了它的加载方式:

FakeNameViewController *vc = [[FakeNameViewController alloc] init];

而不是:

FakeNameViewController *vc = [[FakeNameViewController alloc] initWithNibName:@"FakeNameViewController" bundle:nil];

当视图控制器加载时崩溃:

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

看起来该应用仍在尝试使用nib文件,因为“successView”是IBOutlet的原始名称。清洁无法解决问题。似乎只有在我运行之前删除应用程序时才会修复它。

这让我担心。我怀疑当人们通过AppStore更新时,它会导致应用程序崩溃。有没有一种安全的方法从项目中删除nib文件?

3 个答案:

答案 0 :(得分:6)

当您通过Xcode安装应用程序时,它不会删除最初存在的文件,因此仍会检测并加载原始笔尖。您可以通过清除和删除设备中的应用来解决此问题。我不相信捆绑包中的旧文件可以保留App Store升级。

答案 1 :(得分:0)

我认为你在新代码的开头错过了一个'''。

FakeNameViewController * vc = [[FakeNameViewController alloc] init]; initWithNibName:@“FakeNameViewController”bundle:nil];

答案 2 :(得分:0)

视图控制器上的

initinitWithNibNamed:bundle:执行相同的操作。如果你使用另一个init方法,那么nib是否仍然存在并不重要。