我有一个 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
最佳答案
您可以使用 enumerated()
结合 for case let
,您只需将条件类型转换模式移动到元组中第二个元素的绑定(bind)中。
// 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
)以及您调用它的序列的元素。
关于swift - 如何在 for case 模式匹配循环中获取索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42282232/