使用NSJSONSerialization JSONObjectWithData:读取数据时发生错误

gyy9911 2019-01-16 10:02:03
NSDictionary *projectPositionJSON = [NSJSONSerialization JSONObjectWithData:[aDict objectForKey:@"Position"]
options:NSJSONReadingAllowFragments
error:nil];
用上面的代码从aDict里读出位置数据,aDict是一个NSMutableDictionary,从数据库中读取得到
原本是没有问题的,但当我往数据库里新加了一条测试数据的时候,这句代码就会报错:
2019-01-16 21:51:50.785 IntelligentPlanningMobile[2511:692690] -[__NSCFString bytes]: unrecognized selector sent to instance 0x18964400
2019-01-16 21:51:50.787 IntelligentPlanningMobile[2511:692690] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFString bytes]: unrecognized selector sent to instance 0x18964400'
数据库里的数据长这样:

最后那条“瞎编的”就是我新加的数据,除了id基本上都是复制的上一条的内容,读到这一条的时候就会报错
打了断点之后发现,在读取其他数据的时候“position”对应的key值是一个NSConcretemMutableData类型的数据,而“瞎编的”这条是NSCFString类型的,(如下图)我怀疑可能是这个原因,但为什么到这一条的时候数据类型就不一样了?
...全文
3982 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
gyy9911 2019-02-26
  • 打赏
  • 举报
回复
忘记结贴了,问题已经解决了,数据库里的数据看起来是字符串,实际上是一个文件,把前一条的数据以文件形式导出,然后再以二进制形式导入数据库,读出来的就是正确的数据了
So灬低调 2019-02-14
  • 打赏
  • 举报
回复
这段代码中需要的参数为NSdata类型的数据,而你这个读取出来的是string类型的数据,报错参数无效!基本就是数据类型出错了,要么是结构不对,要么是定义出错,如果都没错,那最后是在取出来的时候强制转换一下!
So灬低调 2019-02-14
  • 打赏
  • 举报
回复
好好检查新增的position里面的数据组成结构是否出问题了
絮语时光 2019-02-12
  • 打赏
  • 举报
回复
你存入数据到数据库的时候,数据库字段的数据类型是不是一样。

29,049

社区成员

发帖
与我相关
我的任务
社区描述
主要讨论与iOS相关的软件和技术
社区管理员
  • iOS
  • 大熊猫侯佩
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧