所以,我正在使用AFNetworking 2.0(带有Bridging-Header的ObjC框架)在本地服务器上发出一些请求。我已经按照一些教程使用Swift对其进行编码。这是代码:
var success = { (operation:AFHTTPRequestOperation!, response:AnyObject!) -> Void in
println(response.description)
successBlock(result:response.description)
}
var failure = { (operation:AFHTTPRequestOperation!, response:NSError!) -> Void in
println(response.description)
errorBlock(error:response.description)
}
var manager = AFHTTPRequestOperationManager()
manager.responseSerializer = AFJSONResponseSerializer();
manager.GET("http://127.0.0.1:8080/api/manufacturer", parameters: nil, success: success, failure: failure)
它检索json并成功打印。答案是这样的:
(
{
"_id" = 539f0973e3c7f4ab1f6078f5;
name = Manufacturer01;
},
{
"_id" = 539f18c5e3c7f4ab1f6078f6;
name = Manufacturer02;
}
)
但是,我无法解析它...我尝试response[0]
来获取第一个元素,但是当我尝试执行时,它会崩溃模拟器甚至是Xcode6:(lldb) > po response[0]
。我尝试了一切,我看到的每个例子都解释了如何打印结果,但没有解析每个字段。
当我尝试调试它时,response
对象看起来像这样:
value = Some {
Some = (instance_type = Builtin.RawPointer = 0x0b240710 -> 0x00bc5da0 (void *)0x00bc5db4: __NSCFArray)
}
有任何线索吗?提前谢谢!
答案 0 :(得分:1)
试试这个
if let responseArray = response as? NSArray {
let firstElement = responseArray[0]
// do something with the first element
}
答案 1 :(得分:0)
我认为你的问题在于将它发送回successBlock。由于检索到的信息未在描述对象中正确显示。
var jsonArrayDictionary = response.result.value as? [[String: Any]]
for item in jsonArrayDictionary {
dump(item["_id"] as? String)
dump(item["name"] as? String)
}
应该这样做。
答案 2 :(得分:-5)
您的示例响应无效JSON。
如果您的示例是数组,JSON将使用方括号而不是parens,引号和冒号中的字段名称而不是等号。例如:
[
{
"_id": 1234,
"name": "foo bar"
},
{
"_id": 12122,
"name": "baz"
}
]
另请参阅其中一个JSON短语,例如:jsonlint.com