2017-02-16 61 views
0

我有一个案例循环,我想在这个循环中使用它们的索引对创建的变量进行排序。但是,我不确定是否有这样的优雅方式。这是我迄今为止的循环。如何获得案例模式匹配循环的索引

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 

回答

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(提供的环路index内部)与调用它在序列中的元素沿开始的连续Int s的序列。

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

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