微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 swift 中 ViewDidLoad() 中调用的函数的完整执行之前,正在调用 CollectionView

如何解决在 swift 中 ViewDidLoad() 中调用的函数的完整执行之前,正在调用 CollectionView

我在 viewDidLoad 方法中有函数调用,就像那样

override func viewDidLoad(){
super.viewDidLoad()
    getSubCategories()
}

函数定义如下

func getSubCategories(){        
    let parameters = xx
    let url = URL(string: "xx")!
    let session = URLSession.shared
    var request = URLRequest(url: url)
    request.httpMethod = "POST"
    
    do {

        request.httpBody = try JSONSerialization.data(withJSONObject: parameters,options: .prettyPrinted)
    } catch let error {
        print(error.localizedDescription)
    }
    
    let task = session.dataTask(with: request as URLRequest,completionHandler: { [self] data,response,error in
        do {
            if (try JSONSerialization.jsonObject(with: data,options: .mutableContainers) as? [String: Any]) != nil {

函数一直执行到这里然后跳转task.resume,然后跳过代码

        subCategoryModel = try JSONDecoder().decode(SubCategoryModel.self,from: data)
        print(subCategoryModel!)
            }
        } catch let error {
            print(error)
        }
    })
    task.resume()

在解码数据之前,collectionViews 开始重新加载并显示值为零的错误。 我已经在 viewdidload 中设置了委托和数据源。解码后加载collectionsviews的代码怎么写。

解决方法

>>> df = fill(df,'value1',['March','April','May']) >>> df city value1 March April May value2 Jun Jul Aut 0 bj 12 12.0 NaN NaN 15 NaN NaN NaN 1 sh 8 NaN NaN 8.0 13 NaN NaN NaN 2 gz 9 NaN 9.0 NaN 9 NaN NaN NaN 3 sz 6 NaN 6.0 NaN 16 NaN NaN NaN >>> df = fill(df,'value2',['Jun','Jul','Aut']) >>> df city value1 March April May value2 Jun Jul Aut 0 bj 12 NaN NaN 12.0 15 NaN NaN 15.0 1 sh 8 NaN NaN 8.0 13 13.0 NaN NaN 2 gz 9 NaN NaN 9.0 9 NaN NaN 9.0 3 sz 6 NaN 6.0 NaN 16 NaN NaN 16.0 正在后台运行。所以它与其余代码不并行。如果您希望下面的部分运行,请执行以下操作:

你将等待的类:

DataTask

现在在您的 class Observable<T> { var didChange: ((T?) -> Void)? var value: T? { didSet { // This is for the code to go back to the main thread before running DispatchQueue.main.async { self.didChange?(self.value) } } } init(_ value: T? = nil) { self.value = value } deinit { didChange = nil } } 上:

ViewController

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。