サーバー側で 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