问题描述
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