Swift:从函数返回类型 JSON
Posted
技术标签:
【中文标题】Swift:从函数返回类型 JSON【英文标题】:Swift: Return Type JSON from function 【发布时间】:2016-07-27 12:15:21 【问题描述】:所以我有一个函数需要返回从 API 端点接收的 JSON 对象。由于某种原因,这个函数总是返回 nil,即使当我打印 response.result.value 时,它也完美地包含了 API 响应,并进入 if 语句分配给 returnJSON。希望有任何意见!
func storeContact(name: String, number: String, apiToken: String) -> AnyObject?
var returnJSON: AnyObject?
let contact = ["api_token" : apiToken, "name" : name, "number": number]
Alamofire.request(.POST, "http://sample.app/api/v1/contact", parameters: contact, encoding: .JSON).responseJSON (response) -> Void in
if let value = response.result.value
returnJSON = value
return returnJSON
【问题讨论】:
为什么不将JSON解析成字典并返回字典呢?此外,在从您的 POST 请求收到结果之前,您将返回returnJSON
,因此它为零。使用块。
看看如何使用Swift Closures with Alamofire for Network requests
【参考方案1】:
Alamofire 使用异步调用,因为互联网获取总是需要一些时间。 Alamofire.request
的完成块总是被调用之后 storeContact
返回它的值。在这种情况下使用闭包很常见:
func storeContact(name: String, number: String, apiToken: String, completeonClosure: (AnyObject?) -> ())
let contact = ["api_token" : apiToken, "name" : name, "number": number]
Alamofire.request(.POST, "http://sample.app/api/v1/contact", parameters: contact, encoding: .JSON).responseJSON
response in
completeonClosure(response.result.value)
用法:
storeContact("name", number: "number", apiToken: "apiToken")
returnJSON in
print(returnJSON)
【讨论】:
以上是关于Swift:从函数返回类型 JSON的主要内容,如果未能解决你的问题,请参考以下文章
我的 swift 函数的返回类型必须继承自 NSObject
将 JSON 数据从 Parse Cloud Code 返回到 Swift 中的可解码结构