我有一个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
答案 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 {
//
}
}