Ios 突然:-[\uu nsarray-popObjectForKey:]:无法识别的选择器发送到实例

Ios 突然:-[\uu nsarray-popObjectForKey:]:无法识别的选择器发送到实例,ios,xcode5,kinvey,Ios,Xcode5,Kinvey,我正在开发一个应用程序,在某个阶段出现了以下错误: -[\uu nsarray-popObjectForKey:]:发送到实例的选择器无法识别 我已经撤销了最新的编辑以查看错误…但错误仍然存在。 所以我撤销了更多的编辑,但错误仍然存在 尝试删除并添加回我认为错误可能来自的框架,错误仍然存在。(这是KinveyKit框架) 尝试将应用程序抛出错误的代码行替换为另一行肯定有效的代码:即使是该行也抛出了错误 我在另一个文件夹上下载了一个较旧的Git应用程序(几天前它肯定还在工作),运行它,然后:同样的

我正在开发一个应用程序,在某个阶段出现了以下错误:

-[\uu nsarray-popObjectForKey:]:发送到实例的选择器无法识别

我已经撤销了最新的编辑以查看错误…但错误仍然存在。 所以我撤销了更多的编辑,但错误仍然存在

尝试删除并添加回我认为错误可能来自的框架,错误仍然存在。(这是KinveyKit框架)

尝试将应用程序抛出错误的代码行替换为另一行肯定有效的代码:即使是该行也抛出了错误

我在另一个文件夹上下载了一个较旧的Git应用程序(几天前它肯定还在工作),运行它,然后:同样的错误

卸载并重新安装Xcode:错误仍然存在

但是:如果我用类似的代码运行其他应用程序,就不会出错。 有人知道吗

我在这里发布了代码,这给了我一个错误,只是给你一个想法…但我认为代码中没有任何错误,因为它以前一直在工作

h

m

酷——讽刺

我花了一下午的时间从一个新项目中重建应用程序,复制粘贴代码。。。 现在我又打开了旧的一个,试着运行它只是…只是试着再试一次,知道它会崩溃,因为我没有改变一个词,它已经崩溃了,每隔一次我尝试今天早上,和。。。。惊喜:又跑了。没有错误

-.-“那么我的问题的答案是什么?不知道。仍然认为这是一些缓存问题,最终解决了一整天,但不是当我试图解决它


如果有人有过类似的经历或有进一步的想法,请随意添加一些东西,随时准备下次发生类似的事情。

我遇到过类似的问题,似乎是由写入钥匙链的损坏的
KCSUser
对象引起的。无论何时调用
[KCSUser activeUser]
,都会调用
popObjectForKey
方法。我能够通过在
应用程序didfishlaunchingwithoptions:
中添加下面的代码来解决这个问题。确保在以下代码有机会运行之前,您没有在任何时候调用
[KCSUser activeUser]

NSArray *secItemClasses = @[(__bridge id)kSecClassGenericPassword,
                            (__bridge id)kSecClassInternetPassword,
                            (__bridge id)kSecClassCertificate,
                            (__bridge id)kSecClassKey,
                            (__bridge id)kSecClassIdentity];
for (id secItemClass in secItemClasses) {
    NSDictionary *spec = @{(__bridge id)kSecClass: secItemClass};
    SecItemDelete((__bridge CFDictionaryRef)spec);
}

这似乎是为了清除/重置钥匙链。运行一次后,将其删除,应用程序应能正常运行

什么是波比?你在哪里调用它-它不在你粘贴的代码中。是的,它根本不在我的代码中。。。我猜它在KinveyKit框架内的某个地方。。。但我不知道在哪里,而且无论如何,它肯定没有错,因为它是一个运行良好的框架,一直到昨晚都在为我工作。你正在给NSMutableArray上的popObjectForKey打电话-检查他们是如何实现它的,或者它应该是特殊类型而不是标准的NSMutableArray。嗯,我明白了__NSArrayM表示NSMutableArray。我只是执行了一次搜索,在我的整个项目中没有使用“popObjectForKey”,也看不到他们在哪里以及如何使用它,因为这是他们的私有代码。我可以写他们来问,但仍然很奇怪,它在工作,然后突然开始不再工作了,不是这个项目,也不是它的旧版本。可能是缓存问题吗?我试着从Xcode中清理项目,通过命令行删除缓存,重新安装Xcode,但如果在项目中的任何地方都看不到它,则什么都没有——它不可能工作:)
- (void)viewDidLoad
{
  ...

  _store = [KCSAppdataStore storeWithOptions:@{ KCSStoreKeyCollectionName : @"AnEntity",
                                                KCSStoreKeyCollectionTemplateClass : [AnEntity class]}];

  [_store queryWithQuery:[KCSQuery query]
          withCompletionBlock:^(NSArray *objectsOrNil1, NSError *errorOrNil) { ... }];

  ...
}
NSArray *secItemClasses = @[(__bridge id)kSecClassGenericPassword,
                            (__bridge id)kSecClassInternetPassword,
                            (__bridge id)kSecClassCertificate,
                            (__bridge id)kSecClassKey,
                            (__bridge id)kSecClassIdentity];
for (id secItemClass in secItemClasses) {
    NSDictionary *spec = @{(__bridge id)kSecClass: secItemClass};
    SecItemDelete((__bridge CFDictionaryRef)spec);
}