gpt4 book ai didi

swift - 如何在数据更改后快速更改变量

转载 作者:行者123 更新时间:2023-11-30 10:33:35 25 4
gpt4 key购买 nike

我正在使用 API 来了解 API 的工作原理,并且编写了一个函数,该函数从网络获取数据并将其解析到我的模型中,但是当我想从该模型打印任何内容时,它不起作用,除非它在我的函数中。

import UIKit

class MovieDetailViewController: UIViewController {

var selectedMovie : Int?
var movieDetail : MovieDetailModel? = nil

override func viewDidLoad() {
super.viewDidLoad()
getMovioesDetail(url: "\(URLs().baseURL)/movie/\(selectedMovie!)\(URLs().API_key)")
print(movieDetail?.backdrop_path)
// It does not print the path
}

//MARK: - Functions

func getMovioesDetail (url: String) {
WebServices().get(url) { (type, model : MovieDetailModel?) in
switch type {
case .Succeed :
self.movieDetail = model
print(self.movieDetail?.backdrop_path)
// It prints the path
case .Failed : print("Failed")
case .FailedDecode : print("FailedDecode")
default : break
}
}
}
}

最佳答案

正如 @Aaron Cyrman 所说,您的函数包括 Web 服务调用,并且 Web 服务异步运行,这意味着您不知道何时收到响应。

这就是为什么如果你想打印一些东西或者重新加载你的tableview/collectionview,那么就这样做,以防万一。成功;不是在调用您的函数后立即进行的。

此外,您最好在填充模型类后对其进行 nil 检查。

仅举一个例子:

case .Succeed:
self.movieDetail = model
if self.movieDetail != nil{
print(movieDetail!.backdrop_path)
DispatchQueue.main.async {
self.tableView.reloadData()
}
}
break

关于swift - 如何在数据更改后快速更改变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58575128/

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