【问题标题】:How to fetch JSON data in chain of links and put it to the same model?如何在链接链中获取 JSON 数据并将其放入同一模型?
【发布时间】:2017-06-18 21:46:19
【问题描述】:

我不知道如何正确表达,所以我将在图片中显示。

我首先创建URLSession,从JSON 获取数据,包括指向我想在同一模型中使用的数据的链接。

第一个链接:

从第一个请求开始,我获得了指向我想在同一张表中使用的其他信息的链接:

来自第一个链接的链接:

我正在尝试从第一个和第二个链接获取数据并将其放在一个数据模型/表格/单元格中。

我需要创建另一个URLSession,但我不明白如何将信息放在一起。 是否可以在另一个URLSession 内开火?有什么制作方法的建议吗?

【问题讨论】:

  • 请将您的代码也添加为文本。选择代码并按下按钮{},然后它会缩进4个空格并显示为代码。 (你可以留下图片)
  • ok - json 数据在 api 主页上是免费的
  • 发送通知删除此问题,因为我想用代码描述问题。

标签: ios json swift nsurlsessiondatatask urlsession


【解决方案1】:

我建议使用一些库来抽象一些复杂性 - Alamofire/SwiftyJSON

Alamofire.request(url, method: .get).responseJSON { response in
switch response.result {
case .success(let value):
    let json = JSON(value)
    //pull your links out of the json and make another request here
    Alamofire.request(json["fixtures"]["competition"]["href"], method: .get).responseJSON { response in
       switch response.result {
          case .success(let value): 
          let json2 = JSON(value)
          //handle the json from your second request
        }
   }
}

请记住,这是伪代码。不要试图剪切和粘贴 - 但它应该能让你朝着大方向前进。

【讨论】:

  • 这是我想到的,将第二个 URLSession 放入另一个。但是应用程序因 findind null 解包某个变量而崩溃。
  • SwiftyJSON 将有助于解析 JSON 并安全地解包 null。但是,如果没有您的实际代码,就无法为您提供更多帮助。
【解决方案2】:

创建一个job queue,将您的任务(=检索数据)放入其中。

从您的根 url 调用开始队列。当它从异步调用返回时,解析 JSON 数据 - 将本地结构填充为数据持有者。以及接下来要关注的 1 或 2 个链接放入队列中。

也许记得在一个数组中已经检索到的 URL,这样您就可以检查您是否没有两次读取某些数据。

注意:api 站点有调用速率限制。如果您创建一个公共应用程序,那么您应该考虑如何将所有调用缓存在 50/24 小时或 50/1 分钟以下

【讨论】:

  • 不公开,仅供培训。
  • 所以逻辑是:启动第一个会话,将任务放入自定义创建的队列,检索数据,将其放入结构中,然后我创建另一个任务来检索更深层次的数据。我应该在哪里重新加载表格以及如何填充单元格?只是从一个结构中放入一些数据,从另一个结构中放入一些数据?但问题是我需要做一些类似任务的事情。比如今天8场比赛,16支球队,我需要16个任务?
【解决方案3】:

我想我找到了解决方案,应该使用“调度组”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-12
    • 1970-01-01
    • 2012-06-04
    相关资源
    最近更新 更多