SwiftyJSON
https://github.com/SwiftyJSON/SwiftyJSON看起来非常有前途。但是,这些说明仅讨论与Alamofire
(用于Swift的AFNetworking)的集成。但是,由于当前项目的性质,它已经在使用AFNetworking2
,因此无法切换到Alamofire
。但是,我无法将AFNetworking
与SwiftyJSON
集成在一起。
我有以下代码块,如何将可向下转换为responseObject
的NSDictionary
转换为SwiftyJSON
中定义的JSON对象?下面的代码不起作用。
let task:NSURLSessionDataTask = AFHTTPSessionManager.GET(
url,
parameters: params,
success: { (task: NSURLSessionDataTask!, responseObject: AnyObject!) in
dispatch_async(dispatch_get_main_queue(), {
// How do I convert responseObject, which can be downcasted to NSDictionary to a JSON object?
let data = JSON(data: responseObject)
completion(task: task, response: data as JSON!, error: nil)
})
},
failure: { (task: NSURLSessionDataTask!, error: NSError!) in
dispatch_async(dispatch_get_main_queue(), {
completion(task: task, response: nil, error: error)
})
}
)
最佳答案
首先,您不需要调度到主队列。 AFNetworking已经在主线程上调用了这些块。
您使用的初始化程序需要的是数据,而不是JSON对象。
您当前正在使用此初始化程序,它需要一个NSData
:
let json = JSON(data: dataFromNetworking)
相反,您应该使用此初始化程序:
let json = JSON(jsonObject)
如果您在此处传递
responseObject
,SwiftyJSON将可以正常工作。另一个注意事项:此代码不属于完成代码块。在AFNetworking的设计中,您应该创建一个响应序列化程序来处理服务器的响应。我建议查看
AFJSONResponseSerializer
的源代码并将其移植以使用SwiftyJSON。关于ios - AFNetworking 2 + SwiftyJSON,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26567936/