NSJSONSerialization 带整数
Posted
技术标签:
【中文标题】NSJSONSerialization 带整数【英文标题】:NSJSONSerialization with an integer 【发布时间】:2014-01-18 20:51:15 【问题描述】:我正在编写一个从 Web 请求中获取数据的 ios 应用程序。该请求返回以下内容:
"hash":"0369a5d5e65335309b2b1502dc96b5aba691b9451c83b9","error":0
我从NSData* responseData
对象获取数据如下:
NSDictionary* JSONdata = [NSJSONSerialization JSONObjectWithData:_responseData options:0 error:&error];
NSInteger responseError = (NSInteger)[JSONdata objectForKey:@"error"];
但是,responseError
未初始化(充满垃圾值)返回。我尝试将 NSInteger
更改为 NSString*
但这会产生以下错误
'NSInvalidArgumentException', reason: '-[__NSCFNumber length]: unrecognized selector sent to instance 0x9d02220'
有什么想法吗?
【问题讨论】:
请阅读灵长类动物与类 【参考方案1】:您需要使用 NSNumber。原始值不适用于 iOS 解析 NSObjects 中的数据:NSArray、NSDictionary、NSNumber、NSString 和 NSNull。
试试这个:NSNumber *responseError = [JSONdata objectForKey:@"error"];
然后要转换为 NSInteger,您可以这样做:NSInteger responseInt = [responseError integerValue];
这将返回一个整数值。
为了将来参考,NSDictionary 不能包含任何原始值。
【讨论】:
以上是关于NSJSONSerialization 带整数的主要内容,如果未能解决你的问题,请参考以下文章
NSJSONSerialization - 无法将数据转换为字符串
Swift 2 - NSJSONSerialization.JSONObjectWithData 处理错误 [重复]
使用 NSJSONSerialization 解析 twitter 搜索 json 数据