这是我的结构
这是比我要填充20个id的数组。
var news = [All]()
这是一个id的数据。我想获取前20个ID的信息。
{ "by": "jonbaer", "descendants": 57, "id": 20643604, "kids": [ 20643886, 20644273, 20644769, 20643937, 20643955, 20644451, 20643969, 20643915, 20643904, 20643858, 20644046 ], "score": 242, "time": 1565264884, "title": "AMD lands Google, Twitter as customers with newest server chip", "type": "story", "url": "https://www.reuters.com/article/us-amd-alphabet/amd-lands-google-twitter-as-customers-with-newest-server-chip-idUSKCN1UX2KL" }
这是我的提取功能。我正在使用整数数组。我想获取前20个ID的数据。
func fetchInfo(of Id: [Int], completion: @escaping
(Result<All,Error>) -> Void){
for i in 0..<20 {
guard let url = URL(string: "https://hacker-news.firebaseio.com/v0/item/\(Id[i]).json") else { return }
URLSession.shared.dataTask(with: url) { (data, response, error) in
if let error = error {
completion(.failure(error))
return
}
guard let jsonData = data else { return }
do{
let info = try JSONDecoder().decode(All.self, from: jsonData)
completion(.success(info))
}catch let error {
completion(.failure(error))
}
}.resume()
}
}
首先,我获取id并将其存储到数组中,然后传递整数数组并尝试打印,但它不起作用。
NetworkManager.shared.fetchIds { (result) in
switch result {
case .success(let id):
self.users = id
print("\(self.users) + \(self.users.count)")
NetworkManager.shared.fetchInfo(of: self.users, completion: { (result) in
switch result {
case .success(let info):
self.news = [info]
self.news.forEach({ (item) in
print(item.title + item.username)
})
DispatchQueue.main.async {
self.tableView.reloadData()
}
case .failure(let error):
print(error)
}
})
case .failure(let error):
print(error)
}
}
启动应用程序时。我的第一个单元格由1到20信息更新。我要按顺序20个单元格和20个信息。 0至19。
答案 0 :(得分:0)
对于每个答案,您都会创建一个新数组并将其分配给您的news
数组,但您需要做的是追加每个答案
在完成处理程序中更改
self.news = [info]
到
self.news.append(info)