首先这个问题从字面意思上理解很简单就是说在字典尝试插入一个空的对象,这个在字典里面是不允许的,绝对不允许!!!
'NSInvalidArgumentException', reason: '[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: attempt to insert nil object from objects[0]’
我的场景是这样的:首先我是通过准备一段参数,然后使用别人的SDK,然后调用别人SDK的接口,别人的SDK接口需要一个字典作为参数,但是接口文档给出的参数说明中参数的key都是大写的,所以我就直接用@“参数说明中的key”直接是copy过来的,但是后面发现其实人家已经用了一个宏定义,关键是宏定义的key是小写开头的,大家可以一睹真容:
key(键值) 键值说明
RoleIdKey 角色id
RoleNameKey 角色名称
RoleLevelKey 角色等级
ServerIdKey 服务器id
ServerNameKey 服务器名称
但是再看看SDK中的宏定义:
#define ServerIdKey @"serverId"
#define ServerNameKey @"serverName"
#define RoleIdKey @"roleId"
#define RoleLevelKey @"roleLevel"
#define RoleNameKey @"roleName"
看到这你是不是觉得活着挺累的?咳,挺累的...
在此呢我只是想说如果自己确认没有问题,那么一定要大胆怀疑是别人的问题,另外对接别人的SDK的时候一定要对照别人的demo来对接,要不然你会怀疑人生的...
以上!!!