我在控制台中遇到了这个崩溃:
2011-08-27 23:26:45.041 App[1672:3117] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFDictionary setObject:forKey:]: attempt to insert nil key'
*** First throw call stack:
(0x3231c8c3 0x362ee1e5 0x3231c7bd 0x3231c7df 0x32289679 0x3052e865 0x3220fd55 0x3221b7a3 0x3345e4b7 0x3345e38c)
terminate called throwing an exception[Switching to process 10243 thread 0x2803]
[Switching to process 10243 thread 0x2803]我认为在它崩溃的时候唯一会触发的代码行是:
UIImage *photo = [self.selectedDictionary objectForKey:@"ProfileImage"];这里看起来有什么不对劲吗?可能的问题是什么?
Edit1:当我调用方法时,它崩溃了:代码:
if(actionSheet.tag == 1) {
[self showAchievements];
}这是showAchievements方法:代码:
- (void)showAchievements {
GKAchievementViewController *achievements = [[GKAchievementViewController alloc] init];
if (achievements != nil)
{
achievements.achievementDelegate = self;
[self presentModalViewController:achievements animated:YES];
}
}
- (void)achievementViewControllerDidFinish:(GKAchievementViewController *)viewController
{
[self dismissModalViewControllerAnimated:YES];
[viewController release];
}这种崩溃会不会是因为我没有在iTC中正确地连接所有的东西?我肯定它会在这种方法中崩溃,但我不知道为什么。
有谁有什么想法吗?
Edit2:我在这里开始了,在我的控制台中,就在它崩溃之前,它有一行写着遗漏了方法。所以我搜索这个NSLog的位置,它在GameCenterManager.m中,我认为这是游戏中心所必需的文件。下面是方法:
- (void) callDelegate: (SEL) selector withArg: (id) arg error: (NSError*) err
{
assert([NSThread isMainThread]);
if([delegate respondsToSelector: selector])
{
if(arg != NULL)
{
[delegate performSelector: selector withObject: arg withObject: err];
}
else
{
[delegate performSelector: selector withObject: err];
}
}
else
{
NSLog(@"Missed Method");
}
}那么,从这段代码中,你能看到哪里出了问题吗?
谢谢!
发布于 2011-08-28 12:29:51
我猜答案就在你发布的代码中:
reason: '-[__NSCFDictionary setObject:forKey:]: attempt to insert nil key'不能将nil键插入到字典中。你是不是在做一些像myDictionary setObject:foo forKey:bar这样的事情,其中'bar‘是空的?
顺便说一句,您也不能将nil值插入到字典中,但这似乎不是错误原因所表明的。您可以调用[myDictionary setValue:nil forKey:bar] (只要bar不为空)-这将从字典中删除键。如果想要表示"nil“值,可以将NSNull对象插入到字典中。但是keys -- keys必须始终为非空()。
发布于 2011-08-28 11:43:40
从日志中看,密钥profileImage等于nil,这意味着在您的NSDictionary中没有该密钥的数据。
https://stackoverflow.com/questions/7218927
复制相似问题