gpt4 book ai didi

swift - 即使在将数据设置为 Swift 4 后,Collection View 数据也不会更新

转载 作者:搜寻专家 更新时间:2023-11-01 06:26:40 25 4
gpt4 key购买 nike

在我的 CollectionViewController 中,我有一个像这样获取数据的方法

func fetchData(){
let newsUrl = "http://api.meroschool.com/school/GetArticles?secretkey=1234&schoolCode=AA36&classId=ClassId000000011&pageNumber=1&type=Activities"

guard let url = URL(string: newsUrl) else {
return
}

URLSession.shared.dataTask(with: url){(data, response, err) in

guard let data = data else {return}

do{
let newsResponse = try JSONDecoder().decode(NewsResponse.self, from: data)
DispatchQueue.main.async {
self.newsList = newsResponse.newsList
print("count", self.newsList?.count)
}

}catch let error{
print("JSON Error", error)
}
}.resume()
}

我已经为 ViewController 设置了所有设置来设置动态单元格,它在我设置虚拟数据时工作。但是使用上面的方法它不会更新 ViewController,即使数据设置为 newsList

网页上的一些问题的答案说需要在主线程中设置数据,所以我设置数据。

DispatchQueue.main.async {
self.newsList = newsResponse.newsList
print("count", self.newsList?.count)
}

但不适合我。设置/更新从 API 加载的数据以便 CollectionViewController 更新的正确方法是什么。

最佳答案

Collection View 不知道您更新了基础数据源。因此,您需要通过调用 reloadData()

明确说明这一点
DispatchQueue.main.async { [weak self] in 
self?.newsList = newsResponse.newsList
self?.yourCollectioView.reloadData()
}

关于swift - 即使在将数据设置为 Swift 4 后,Collection View 数据也不会更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53428026/

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