我获取的整个数据都存储在数组的第一个索引中
The whole data I fetch is stored into the first index of the array
这是我的结构
这是我想要填充 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。
对于您得到的每个答案,您都会创建一个新数组并将其分配给您的 news
数组,但您需要做的是 append 每个答案
在完成处理程序中更改
self.news = [info]
至
self.news.append(info)
这是我的结构
这是我想要填充 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。
对于您得到的每个答案,您都会创建一个新数组并将其分配给您的 news
数组,但您需要做的是 append 每个答案
在完成处理程序中更改
self.news = [info]
至
self.news.append(info)