我对Swift 3很陌生,我必须在我的API上做一个GET请求。我使用的是Alamofire,它使用异步函数。
我在我的Android应用程序上做了完全相同的事情,GET返回JSON数据
这是我在Swift中的代码:
func getValueJSON() -> JSON {
var res = JSON({})
let myGroup = DispatchGroup()
myGroup.enter()
Alamofire.request(url_).responseJSON { response in
res = response.result.value as! JSON
print("first result", res)
myGroup.leave()
}
myGroup.notify(queue: .main) {
print("Finished all requests.", res)
}
print("second result", res)
return res
}
字符串
但是我对“res = response.result.value”这一行有问题,它给了我错误:
线程1:信号SIGABRT
我真的不明白问题出在哪里,做一个“同步”功能很难,也许我做错了。
我的目标是将请求的结果存储在我返回的变量中。有人能帮忙吗?
1条答案
按热度按时间ee7vknir1#
我建议你将Alamofire和SwiftyJSON一起使用,因为这样你就可以更容易地解析JSON。
这里有一个经典的例子:
字符串
如果需要传递
parameters
或headers
,只需将其添加到request
方法中。型
所以你的请求会是这样的(这是POST请求):
型
我还没有测试过,但它应该工作.另外,你需要设置
allow arbitary load
到yes
(info.plist
中的App Transport Security Settings
)如果你想允许通过HTTP协议的请求.这是不推荐的,但它对开发很好。