【问题标题】:this class is not key value coding-compliant for the key givenName [duplicate]此类与键 givenName [重复] 的键值编码不兼容
【发布时间】:2011-07-24 09:47:46
【问题描述】:

所以我有这个

- (void)loadView {
BOOL success;
NSFileManager *fileManager = [NSFileManager defaultManager];
NSString* documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString* databasePath = [documentsPath stringByAppendingPathComponent:@"ProxDeals.db"];
NSError *error;

BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:databasePath];
if (fileExists==TRUE) {
    [[NSBundle mainBundle] loadNibNamed:@"ProxDealsViewController" owner:self options:nil];
}
else {
    NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"ProxDeals.db"];
    NSLog(@"%@",defaultDBPath);
    success = [fileManager copyItemAtPath:defaultDBPath toPath:databasePath error:&error];
    if (!success) {
        NSAssert1(0, @"Failed to create writable database file with message '%@/.", [error localizedDescription]);
    }
    [[NSBundle mainBundle] loadNibNamed:@"UserRegistration" owner:self options:nil];
}

}

这个错误:

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

我知道我在 UserRegistration nib 的初始化中没有做正确的事情,但我不知道如何解决这个问题。

【问题讨论】:

  • 它一直有效,直到我开始在二等舱连接 IBOutlets。

标签: iphone


【解决方案1】:

如果您有不同的 storybord 文件,并且如果您的头文件中有出口引用但没有创建出口,那么您只需通过右键单击文件所有者来删除连接。

文件所有者->右键单击->删除那里不需要的插座连接。 清理并运行您的项目

仔细阅读以获得清晰的解释。此类与键的键值编码不兼容

【讨论】:

    【解决方案2】:

    有时,从设备/模拟器中删除应用程序非常烦人,尤其是当您保存了数据和配置时。

    要解决此问题,对于您删除了.xib 的每个ViewController,文件添加以下代码:

    -(NSString*) nibName
    {
        return nil;
    }
    

    【讨论】:

      【解决方案3】:

      在我从 nib 文件中删除了一个 UI 元素并从视图控制器中删除了相应的 IBOutlet 之后,我也遇到了这种情况。清理项目也没有解决它。

      因此,我删除了由 Xcode 4 创建的 DerivedData 文件夹中的文件夹。然后它起作用了!

      【讨论】:

        【解决方案4】:

        当 NIB 文件中的 IBOutlets 与 .h 文件不匹配时,通常会出现此问题。

        确保您在 IB 中没有任何断开的连接(它们通常以黄色显示,旁边有一个警告标志)。此外,在构建之前清理项目(XCode 4 中的 Product > Clean),您可能有一个过时的编译文件。

        【讨论】:

        • 我在 IB 中没有任何断开的连接。
        • 我设法让它工作。我只是在主类中声明了 IBOutlets 并将 FileOwner 设置为同一类。感谢您的帮助。
        【解决方案5】:

        这通常意味着有东西试图访问@property“givenName”。

        如果您使用 IB 做某事,通常的原因是您:

        • 从类中删除了该属性, 但还没有删除 IB 中的连接 还
        • 或:您有一个文件的所有者 对象设置为错误的类(检查 属性 - 根据您使用的 xcode 版本而有所不同 - 用于查找类名 其设置为。您可能复制/粘贴了一个 NIB 文件,并且没有更改 NIB 中的此字段),并且您已经连接了一个 那堂课的出路,但你的 实际的文件所有者是什么 不一样的

        【讨论】:

        • 我遇到了另一个导致错误的问题,您明确的一般指导方针帮助我找到了解决方案。剩下的联播把事情搞砸了。
        • Apple 真的应该考虑改进他们的错误信息。
        • 谢谢你节省了我的时间:D
        • 下次复制粘贴一定要小心
        猜你喜欢
        • 2013-06-23
        • 2017-09-27
        • 1970-01-01
        • 2015-08-27
        • 2011-03-17
        • 2012-09-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多