ios - 我获取的全部数据存储到数组的第一个索引中

标签 ios arrays json swift decodable

这是我的结构

这就是我想要填充 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 数组,但您需要做的是附加每个答案

在完成处理程序中更改

self.news = [info]

self.news.append(info)

关于ios - 我获取的全部数据存储到数组的第一个索引中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57415234/

相关文章:

ios - CAKeyFrameAnimation 在重复之前延迟

ios - 在 TabBarController 中弹出到 root SplitViewController - iOS

JavaScript : unable to merge two arrays

python - 选择 numpy 列中的最大元素并获取其行

javascript - Json数组元素到html页面

ios - 在 iOS 中显示关于滑动删除的警告

ios - UIButton 没有响应我对 collectionView 单元格的触摸?

c - 使用 GUI 自动填充数组

mysql - 将 MySQL 中的 JSON 数组转换为行

javascript - 如何更改下面给出的 json 数组?