开发者社区> 问答> 正文

关于一个异常:NSInvalidArgumentException

声明了全局变量:NSDictionary *dict;。想要将dictionary添加到array中报错:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '* -[__NSArrayM insertObject:atIndex:]: object cannot be nil'
 dict = @{@"Testcase" : Testcase, @"TestResult" : TestResult,@"Message": Message};
 NSMutableArray * myArray = [[NSMutableArray alloc] init];
 [myArray insertObject:dict atIndex:TestcaseId];

展开
收起
爵霸 2016-03-23 08:35:52 2866 0
1 条回答
写回答
取消 提交回答
  • 主要是检查 Testcase, TestResult, Message 这三个值是否为nil .如果其中有一个为nil,那么就出报如上的错误.

    使用NSLog输出一个dict的值.就可以看到其中的哪一个值为nil.

    dict = @{@"Testcase" : Testcase, @"TestResult" : TestResult,@"Message": Message};
    NSLog(@"dict is %@",dict);

    你可以加入一些你自己的逻辑,比如:当为nil时设置为空串等.这样至少能保证程序不会再报异常

    #define isNil(obj) obj==nil;
    dict = @{@"Testcase" : isNil(Testcase) ? @"" : Testcase, @"TestResult" : isNil(TestResult) ? @"" : TestResult,@"Message": isNil(Message) ? @"" : Message};
    NSLog(@"dict is %@",dict);
    2019-07-17 19:10:12
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载