gpt4 book ai didi

ios - 从 REST API 加载数据后执行 segue

转载 作者:行者123 更新时间:2023-11-29 05:29:57 27 4
gpt4 key购买 nike

我正在编写简单的 REST API 客户端。在每个 UITableViewCell 选择上执行 GET 请求。由于请求是在另一个线程中执行的,因此 View 加载的速度比接收响应的速度快。因此,每一段都会显示一秒钟的空白屏幕。我希望仅在从服务器加载数据后才执行 segue。

我尝试将请求代码从 viewDidLoad 移动到prepare(forSegue) 方法。但请求是异步的,所以它不会改变任何东西......我尝试同步请求的执行,但这会阻塞 UI,所以我不知道该怎么做。

最佳答案

以下是如何实现它的示例:

import UIKit
import Foundation


loadData()

func loadData() {
let request = NSMutableURLRequest(url: URL(string: "https://www.myUrl.com")!)
request.httpMethod = "GET"

let dataTask = URLSession.shared.dataTask(with: request as URLRequest) { [weak self] data,response,error in

do {//TODO: Parse Response
if let jsonResult = try JSONSerialization.jsonObject(with: data!, options: []) as? NSDictionary {
print("data \(jsonResult)")
self?.loadNextScreen(data: jsonResult)
}
} catch let error as NSError {
print(error.localizedDescription)
}

}
dataTask.resume()
}

//instantiating the vc
func loadNextScreen(data: NSDictionary) {
let vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "NewVCIdentifier") as! ViewController
vc.model = data
vc.present(animated: true)
}


//using a segue
func loadNextScreen(data: NSDictionary) {
self.performSegue(withIdentifier: "MySegue", sender: data)//set the data from the segue to the controller
}

关于ios - 从 REST API 加载数据后执行 segue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57698889/

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