服务器端执行SQL查询(服务器是用python编写的)返回一个如下所示的json:
return HttpResponse(json.dumps([{"data":output, "total":theResult}]), content_type ='application/json')
output
是从内部方法返回的结果,并且已经像这样序列化了:
output = serializers.serialize('json',p_list,fields=('price','publishdate','size'))
客户端使用success:^(AFHTTPRequestOperation *operation, id responseObject)
成功收到回复AFHTTPRequestOperationManager
,这就是responseObject
在调试控制台(lldb)
中的样子
po responseObject
<__NSCFArray 0x116fa6190>(
{
data = "[{\"pk\": 817, \"model\": \"xx\", \"fields\": { \"price\": \"3300\", \"publishdate\": \"2014-10-30T00:00:00\", \"size\": 35}}, {\"pk\": 2799, \"model\": \"xx\", \"fields\": { \"price\": \"6250\", \"publishdate\": \"2014-12-08T00:00:00\",\"size\": 0}}]";
total = (
381
);
}
)
控制台po responseObject[0][@"data"][0]
中的打印数据数组,并按预期打印p responseObject[0][@"total"][0]
打印381
问题:
responseObject[0][@"total"][0]
转换为整数的代码中返回垃圾编号responseObject[0][@"data"][0]
投射到NSArray*
然后尝试执行计数或任何其他操作会导致异常:'NSInvalidArgumentException', reason: '-[__NSCFString count]: unrecognized selector sent to instance
答案 0 :(得分:0)
部分问题可能是描述方法没有引用所有字符串,所以381可能是一个字符串。
可行的解决方案(缺乏OP代码):
如果真的是int
使用:
int value = responseObject[0][@"total"][0]
如果它真的是string
:
NSString *valueString = responseObject[0][@"total"][0]
int value = [valueString intValue];