2013-03-27 104 views
2

我不断收到我的应用程序的这个错误。我唯一一次得到错误的是当我从后台状态恢复应用程序。我需要一些帮助来找出错误所在。每次我从背景转到主动时,无论活动的ViewController是什么,都会发生。不是关键值编码兼容

由于未捕获异常'NSUnknownKeyException',原因:'[< __NSCFString 0xc063200> valueForUndefinedKey:]终止应用程序:此类不是密钥响应编码兼容的键值。

+0

可能重复的[这是什么意思? “'NSUnknownKeyException',原因:...这个类不是密钥X的编码兼容键值”](http://stackoverflow.com/questions/3088059/what-does-this-mean-nsunknownkeyexception-reason-这种类别不是关键) – jtbandes 2015-08-03 06:53:18

回答

4

听起来像堆栈中的某个地方,NSString上正在访问一个不存在的键。 valueForUndefinedKey是Objective-C中键值编码的一部分,是NSObject的一部分。当valueForKey:在几乎任何对象上都不能正常工作时,可以调用它。

我看到抛出的异常最常当任:

  1. 用XIB1文件的Storyboard的类被重构和 故事板或XIB没有。
  2. 你有一个主要的内存问题,你在一个释放对象上调用一个方法,并且访问了错误的内存块。
  3. 这是一个网络JSON API的行动和该方法是从JSON(例如,一个NSString而不是NSDictionary)序列化的对象类型错误。

在Xcode的Breakpoint Navigator中的所有异常情况下设置异常断点,以便您可以在代码NSUnknownKeyException中找到确切的代码行。按(+)调出菜单。

Breakpoint Navigator

+0

看起来它是第三方库Xtify推送通知。这是'if([responseDictionary valueForKeyPath:kParentJson]!= [NSNull null] && [[responseDictionary valueForKeyPath:kParentJson] length]> 0){' – user717452 2013-03-27 02:34:28

+0

是的,但'responseDictionary'应该可能是'NSDictionary',在'NSString'工厂类('NSCFString')上抛出异常。所以它可能是我列表中的#2或3场景。你可以在'if([responseDictionary valueForKeyPath:kParentJson] ...'被调用之前添加'responseDictionary'作为'not nil'和一个NSDictionary的测试。 – 2013-03-27 02:36:05

+0

我想知道你的应用程序是不是可以连接服务器,认证正确,因此得到了从JSON序列化的错误类型的对象 – 2013-03-27 02:38:46

相关问题