【问题标题】:Replace value from multi-dimensional array替换多维数组中的值
【发布时间】:2021-10-07 03:21:39
【问题描述】:

我有一个由包含多个数组的结构组成的数组,当尝试替换子数组中的值时遇到错误:

致命错误:索引超出范围

  struct Main {
  var city: String
  var pop: Int
  var color: String
}

class Home {
    
var mainArray = [[Main]]()

func update() {
    let data = Main(city: "SF", pop: 2, color: "orange")
    mainArray.append(data)
    
    for var subArray in mainArray {
        for var i in subArray {
          var newCity = "SB"
          
           i.city = newCity
           subArray[0].city = i.city
       }

    }
  }
}

【问题讨论】:

  • var mainArray 开头的行不是有效的 Swift 代码。请使用您正在使用的实际代码更新您的问题。
  • 进行了更新。希望有帮助
  • mainArray.append(data) 仍然无法编译。

标签: ios swift


【解决方案1】:

您的代码将永远无法工作,因为由于值语义,您将修改数组和子数组的副本。

你必须直接修改原始数组,像这样

struct Main {
  var city: String
  var pop: Int
  var color: String
}

var mainArray = [[Main(city: "SF", pop: 1, color: "blue")], [Main(city: "NYC", pop: 2, color: "white")]]

for (index,  subArray) in mainArray.enumerated() {
    for (subIndex, _) in subArray.enumerated() {
        let newCity = "SB"
        mainArray[index][subIndex].city = newCity
    }
    
}

【讨论】:

  • 感谢您的回复。我确实想修改原始数组并且一直在弄清楚如何但这个答案有助于找到解决方案。
猜你喜欢
  • 1970-01-01
  • 2013-08-31
  • 1970-01-01
  • 1970-01-01
  • 2016-09-26
  • 2016-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多