gpt4 book ai didi

ios - 如何将异步请求发送回 viewDidLoad 方法

转载 作者:搜寻专家 更新时间:2023-11-01 07:21:54 25 4
gpt4 key购买 nike

我是编程新手,当然速度很快。我想知道如何将我的请求响应发送回我的 viewDidLoad 以在那里使用。对于请求,我使用 alamofire,对于 json,我使用 swiftyJSON。我想要做的是从包含标题和图像 url 的服务器获取数据 (JSON)。之后我试图从图像 url 中获取图像。 在 viewDidLad 中,我调用了一个函数,它是一个 Get 方法。

override func viewDidLoad() {
super.viewDidLoad()
getData()
//use myStruct

在 getData() 中我这样做:

func getData()
{
Alamofire.request(.GET,"heregoesurl")
.responseJSON { response in
if let Json = response.result.value {
let json = JSON(Json)
for (_,subJson):(String, JSON) in json {
//get image url
//pass image url to imageGet() method
//add image to an array of myStruct
}

}
}
}

在 imageGet() 方法中:

func getImages(url:String,type:String)
{
Alamofire.request(.GET, url)
.responseImage { response in
if let image = response.result.value {
//add image to myStruct
}
}
}

问题是由于请求的异步性质,myStruct 在 vi​​ewDidLoad 中还没有准备好。我对 getData() 方法使用了 completionHandler,它工作正常。但我仍然没有图片,我只有图片网址。我不知道我该怎么办。

任何有关如何做这样的事情的帮助将不胜感激。

最佳答案

试试这个:

public func getImages(url:String,type:String){
Alamofire.request(.GET, url).response { (request, response, data, error) in
//For sure that you will have the main queue and you will see the view
dispatch_sync(dispatch_get_main_queue(), {
self.myImageView.image = UIImage(data: data, scale:1) // or store it to your `myStruct`
})
}
}

在 getData() 函数中调用它

关于ios - 如何将异步请求发送回 viewDidLoad 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38467049/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com