Swift - 迭代嵌套的字典数组

时间:2015-07-14 21:04:02

标签: arrays json swift dictionary

我正在尝试使用恩典笔记API为我附近的影院播放电影(JSON格式),以构建个人应用程序。我可以打电话给服务器并显示电影正在显示的内容。但是,我正在尝试显示在JSON中更深入嵌入的放映时间。我会尽力解释,但JSON的回应是:

theres x x dictionaries的根数组(但是很多电影都在剧院里)

每个字典里面都是一个关键的'标题',我正在表格中显示(正常工作)。

我所坚持的是,在每个根词典中,还有一个名为“showtimes”的字典。在这本词典里面有数量的词典(不过很多时候电影在剧院里播放)。在每个词典中都有一个关键的'dateTime',它是我想要获取并存储到每个电影的数组中的实际showtime。我们的想法是在tableview单元格详细文本标签中显示类似'12:30,2:45,5:00,7:30'的内容。

提前谢谢!

1 个答案:

答案 0 :(得分:1)

This将是您的有用资源。 首先,我建议您使用SwiftyJSON。它将使json轻松完成您的工作。回到你的问题......(为了清楚起见,请参阅我在代码中的评论)

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 :(