【问题标题】:Loop through JSON data and store it in array遍历 JSON 数据并将其存储在数组中
【发布时间】:2020-03-06 19:16:11
【问题描述】:

所以我有一个数组中的 JSON 数据(0 是一个月的第一天,直到一个月的最后一天)。

如何循环遍历整个数组并将一天中的 3 次分别存储在自己的数组中(我希望稍后将这些时间用于通知)

dayForArray 变量只是当前日期 - 1,因此它与 JSON 数组中的数字匹配。

func parseJSON(_ timesData: Data) -> TimesModel? {
    let decoder = JSONDecoder()
    do {
        let decodedData = try decoder.decode(TimesData.self, from: timesData)
        let time1 = decodedData.data[dayForArray].timings.Time1
        let time2 = decodedData.data[dayForArray].timings.Time2
        let time3 = decodedData.data[dayForArray].timings.Time3

        let time = TimeModel(time1: time1, time2: time2, time3: time3)

        return times

    } catch {
        delegate?.didFailWithError(error: error)
        return nil
    }
}

【问题讨论】:

  • 那么,您是说此代码有效,但仅适用于一天,dayForArray,您希望它适用于该月的每一天?
  • 是的,它现在正在工作。但它只存储当天的时间,仅此而已。我想获取整个 JSON 数组并存储它们,以便我可以全天通知用户这 3 个时间,而不必每天检查应用程序

标签: arrays json swift xcode


【解决方案1】:

你需要做的是使用map从你的json数组中创建一个TimeModel对象数组

let times = decodedData.data.map { 
    TimeModel(time1: $0.timings.Time1, 
              time2: $0.timings.Time2, 
              time3: $0.timings.Time3) 
}

【讨论】:

  • 好的,所以我到了某个地方。我添加了它,但现在出现错误“无法将类型'[TimeModel]'的返回表达式转换为返回类型'TimeModel?'”我认为这是因为在我的 TimeModel 中,我将 3 次列为字符串,我将它们更改为数组(不确定是否应该有?),现在我得到“传递给不带参数的调用的参数”。感谢您的帮助
  • @MichaelScott 您的函数被声明为返回一个 TimeModel,将其更改为返回一个数组 [TimeModel]
猜你喜欢
  • 2021-07-03
  • 1970-01-01
  • 1970-01-01
  • 2013-10-03
  • 2018-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多