swift - 如何在 for case 模式匹配循环中获取索引

标签 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 

最佳答案

您可以使用 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/

相关文章:

python - swift 和 Python : identical code results in different results

objective-c - 如何从 Swift 调用 Objective-C 类的工厂方法?

ios - 在 Swift 中格式化电话号码

swift - 如果 Self 是 swift 中的两个(或更多)类之一,是否允许使用协议(protocol)?

ios - 调试为什么 SKScene init(fileNamed :) returns nil

Swift 数组(bufferPointer)EXC_BAD_ACCESS 崩溃

ios - 根据 json 中的值进行搜索

ios - 如何在不为可选参数指定值的情况下快速调用以下函数?

ios - 消息扩展中的页脚和页眉覆盖的 UIButtons

ios - a = b == c 在 swift 中是什么意思