如何获取案例模式匹配循环的索引

时间:2017-02-16 18:46:20

标签: swift

我有一个for case循环,我想在其中使用来自该循环的索引对创建的变量进行排序。但是,我不确定是否有一种优雅的方式。这是我到目前为止的循环。

typealias JSONDictionary = [String: AnyObject]

for case let playlistData as JSONDictionary in JSON {
        let playlist = Playlist(context: coreData.viewContext)
        playlist.initialize(dictionary: playlistData, key: youtube.GMSKey)

这是我想要避免的:

       typealias JSONDictionary = [String: AnyObject]

       var i = 0
        for case let playlistData as JSONDictionary in JSON {
            let playlist = Playlist(context: coreData.viewContext)
            playlist.initialize(dictionary: playlistData, key: youtube.GMSKey)
            // etc
            i += 1 

2 个答案:

答案 0 :(得分:3)

您可以将enumerated()for case let结合使用,只需将条件类型转换模式移动到元组中第二个元素的绑定中。

// note that variable names should be lowerCamelCase – I renamed 'JSON' to 'json'.
for case let (index, playlistData as JSONDictionary) in json.enumerated() {
    // ...
}

enumerated()返回从0开始的一系列连续Int的序列(在循环中可用index)以及您调用它的序列的元素。

答案 1 :(得分:1)

for case (index, element as JSONDictionary) in JSON.enumerated() {
  print("Item \(index): \(element)")
}

for (index, element) in JSON.enumerated() {
  if element as JSONDictionary {
   //
  }
}