iOS开发之报错'NSInvalidArgumentException', reason: '[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: attempt to insert nil object from objects[0]’

首先这个问题从字面意思上理解很简单就是说在字典尝试插入一个空的对象,这个在字典里面是不允许的,绝对不允许!!!

'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来对接,要不然你会怀疑人生的...

以上!!!


逗比.gif

你可能感兴趣的:(iOS开发之报错'NSInvalidArgumentException', reason: '[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: attempt to insert nil object from objects[0]’)