如何解决在 swift 中 ViewDidLoad() 中调用的函数的完整执行之前,正在调用 CollectionView
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 举报,一经查实,本站将立刻删除。