【发布时间】:2013-03-17 01:32:27
【问题描述】:
我的应用程序不断收到此错误消息。我收到错误的唯一一次是当我从后台状态恢复应用程序时。我需要一些帮助来找出错误所在。每次我从后台转到活动时都会发生这种情况,无论活动的 ViewController 是什么。
由于未捕获的异常“NSUnknownKeyException”而终止应用程序,原因:“[<__nscfstring> valueForUndefinedKey:]:此类不符合键值编码的键响应。”
【问题讨论】:
我的应用程序不断收到此错误消息。我收到错误的唯一一次是当我从后台状态恢复应用程序时。我需要一些帮助来找出错误所在。每次我从后台转到活动时都会发生这种情况,无论活动的 ViewController 是什么。
由于未捕获的异常“NSUnknownKeyException”而终止应用程序,原因:“[<__nscfstring> valueForUndefinedKey:]:此类不符合键值编码的键响应。”
【问题讨论】:
听起来像是在堆栈中的某个地方,正在访问 NSString 上不存在的键。 valueForUndefinedKey 是 Objective-C 中键值编码的一部分,也是 NSObject 的一部分。当valueForKey: 对几乎任何对象都不起作用时,可以调用它。
我发现在以下任一情况下最常抛出异常:
在 Xcode 的 Breakpoint Navigator 中的 All Exceptions 上设置一个异常断点,以便您可以在代码中找到确切的行NSUnknownKeyException 被抛出。按 (+) 调出菜单。
【讨论】:
if ([responseDictionary valueForKeyPath:kParentJson]!=[NSNull null] && [[responseDictionary valueForKeyPath:kParentJson] length] > 0 ) {
responseDictionary 应该是NSDictionary 并且在NSString 工厂类(NSCFString) 上抛出异常。所以它可能是我列表中的#2 或 3 场景。您可以在调用 if ([responseDictionary valueForKeyPath:kParentJson]... 之前添加一个测试 responseDictionary 是否为 'not nil' 和一个 NSDictionary。