【问题标题】:Swift 5: How do I update values in an Array of arrays?Swift 5:如何更新数组数组中的值?
【发布时间】:2019-11-25 18:58:11
【问题描述】:

我正在尝试更新数组数组中的值,但我猜for item in buffer 必须在缓冲区中制作项目的副本,而不是提供对原始项目的引用。除了某种for i=...{buffer[i][3]='Moved'} 之外,还有什么方法可以做到这一点。

        var buffer = [[String]]()
        let bufRemoved = buffer.filter({$0[3] == "Removal"})
        let bufAdded   = buffer.filter({$0[3] == "Addition"})

        let moved      = bufRemoved.filter({item in bufAdded.contains(where: {$0[2] == item[2]})})

        for var item in buffer {
            if moved.contains(where: {$0[2] == item[2]}) {
                switch item[3] {
                case "Removal":
                    item[3] = "Moved(out)"
                case "Addition":
                    item[3] = "Moved(in)"
                default:
                    break
                }
            }
        }

        let bufMoved   = buffer.filter({$0[3].contains("Move")})

【问题讨论】:

  • for i in buffer.indices 是要走的路。
  • 没有。这就是 Swift 中的情况。但是你可以组成一个不同的updatedBuffer 数组,在 for 循环中添加每个项目,可以继续使用。

标签: arrays swift swift5.1


【解决方案1】:

一个解决方案是enumerate数组也有索引

    for (index, item) in buffer.enumerated() {
        if moved.contains(where: {$0[2] == item[2]}) {
            switch item[3] {
            case "Removal":
                buffer[index][3] = "Moved(out)"
            case "Addition":
                buffer[index][3] = "Moved(in)"
            default:
                break
            }
        }
    }

【讨论】:

    猜你喜欢
    • 2021-04-03
    • 1970-01-01
    • 2022-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-14
    • 2021-08-19
    • 2017-09-19
    相关资源
    最近更新 更多