与NSDictonary有关的Bugg有时会因“试图插入零”响应而崩溃

时间:2016-03-20 14:19:00

标签: iphone xcode debugging nsdictionary

我遇到了很多麻烦,在某些情况下会给出“initWithObjects:forKeys:count:]:尝试从对象插入nil对象[6]”“错误消息。它只发生在每三次试验中,而在其他情况下它运行正常。我没有调试在某些情况下发生的错误,所以这就是为什么我要求帮助。可能很难找到解决方案,但我很乐意接受一些建议,至少从哪里开始寻找问题以及如何调试它?

基本上我的应用程序有一个方法,它将带有对象的NSDictonary列表发送到服务器。在某些情况下,如果用户没有为该列表选择任何内容,我想删除一个对象。问题是服务器死了不像发送一个空的空间。所以我做了一个不好看的工作。基本上,IBaction检查Object是否包含nil。如果它包含nil,它会重定向到一个非常相似的NSDictonary,而Object不包含Nil。它在某些情况下会发生,但似乎它有时候不会识别包含nil的对象。

这是Inaction中重定向代码的代码。我还没有创建一个向对象插入任何东西的方法:@“DefaultCreateImageID”但据我所知它应该总是为零。

 NSString *Imagestuff= [[NSUserDefaults standardUserDefaults] objectForKey:@"DefaultcreateImageID"];
    if ( [[NSUserDefaults standardUserDefaults] objectForKey:@"DefaultcreateImageID"] !=  ( NSString *) [NSNull null]  ){
    DataHandler *handler = [DataHandler sharedDatahandler];
    handler.authenticateUserDelegate = self;
    [handler createActivityNoImage];
        NSLog(Imagestuff);
    }

    else
    {
        DataHandler *handler = [DataHandler sharedDatahandler];
        handler.authenticateUserDelegate = self;
        [handler createActivity];

    }

谢谢!

2 个答案:

答案 0 :(得分:0)

如果您收到错误"尝试插入nil"那么你想要添加到字典中的一个对象是nil。解决方案:不要这样做。

弄清楚为什么你要添加到字典中的某些项目是nil。然后找出你想要在这种情况下做什么。

答案 1 :(得分:0)

跟进gnashers729的回答。对我来说问题不是零,而是我的Inaction无法重新识别对象包含的内容。

这里举例说明我尝试用字符串替换nil来重新识别。我遇到了同样的问题,我的方法在某些情况下识别字符串,在某些情况下不识别。

NSString *Imagestuff= [[NSUserDefaults standardUserDefaults] objectForKey:@"DefaultcreateImageID"];
    if ( [[NSUserDefaults standardUserDefaults] objectForKey:@"DefaultcreateImageID"] !=  ( NSString *) @"noImage"  ){