【问题标题】:Swift - Iterating over nested array of dictionariesSwift - 迭代嵌套的字典数组
【发布时间】:2015-10-03 17:21:18
【问题描述】:

我正在尝试使用优雅笔记 API 为在我附近的影院播放的电影构建一个有趣的个人应用程序(JSON 格式)。我可以调用服务器并显示正在播放的电影。但是,我正在尝试显示嵌入在 JSON 中更深的放映时间。我会尽力解释,但 JSON 响应是:

有一个 x 字典的根数组(不管影院中有多少电影)

在每个字典中都有一个关键的“标题”,我正在获取并显示在表格中(正常工作)。

我遇到的问题是,在每个根字典中,都有另一本名为“showtimes”的字典。在这本词典里面有 x 数量的词典(无论电影在剧院播放多少次)。在这些字典中的每一个里面都有一个键“dateTime”,它是我想要获取并存储到每部电影的数组中的实际放映时间。这个想法是在表格视图单元格详细信息文本标签中显示类似“12:30、2:45、5:00,7:30”的内容。

提前谢谢你!

【问题讨论】:

  • 请分享您的 JSON 响应。

标签: arrays json swift dictionary


【解决方案1】:

This 将成为您的有用资源。 首先,我推荐你使用SwiftyJSON。它将简化您使用 json 的工作。回到你的问题......(为了清楚起见,请参阅我的代码中的 cmets)

for (index: String, subJson: JSON) in json { // your whole json is an array, "[" in the beginning indicates that
     for (index: String, subSubJson: JSON) in subJson["showtimes"] { // in all "showtime" arrays: 
              self.<YOUR ARRAY>.append(getTime(subSubJson["dateTime"].string!))   // append processed value for key "dateTime" to <YOUR ARRAY>
            }
        }

func getTime(input:String) -> String {
    let dateFormatter = NSDateFormatter()
    dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm"
    let date = dateFormatter.dateFromString(input)
    let calendar = NSCalendar.currentCalendar()
    let comp = calendar.components((.CalendarUnitHour | .CalendarUnitMinute), fromDate: date!)
    let hour = comp.hour
    let minute = comp.minute
    return ("\(hour):\(minute)")
}

这会给你:

10:15
12:20
14:25
16:30
18:35
20:40
10:20
12:30
14:40
16:50
19:0  // not sure why this happens :(

【讨论】:

  • 谢谢!我得去看看
  • 我现在实际上正在解决它。我会通知你并更新我的答案。
  • 感谢司机。真的很有帮助。这会很困难,因为我需要将每部电影的时间存储在一个单独的数组中以显示在表格中,而不是一个主数组,
  • 不客气!我不确定您是否真的以这种方式实施它。为每部电影创建一个数组并没有多大意义,因为您可以简单地为您的表格视图创建一个主数组/字典/任何内容。我建议你在开始实现你的表格视图之前先看看这个tutorial 和这个project
  • 是的,我得再调查一下。我想我只是要允许用户点击一部电影并将其推送到一个详细视图控制器,以显示电影艺术作品、放映时间和描述。数组中的 JSON 响应有点痛苦,因为我不能只根据所选单元格的名称查询 JSON 响应(它是一个分组的表格视图,因为我正在展示我的 2 个本地剧院)。此外,如果您还不知道的话,swiftyJSON 似乎与 Swift 2.0 存在问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-09-12
  • 1970-01-01
  • 2014-01-21
  • 2012-07-15
  • 2019-10-17
  • 2021-01-16
  • 1970-01-01
相关资源
最近更新 更多