我有这个简单的结构。
struct Section {
let store: Store
var offers: [Offer]
}
在 VC 中,我在顶部声明了这些 Section
的数组,fileprivate var sections: [Section] = []
。我在 viewDidLoad()
中添加了一些 Section
对象。
稍后,我需要从 Section
中的 offers
数组中删除一些 Offer
对象。
我遍历 sections
数组以找到包含需要删除的 Offer
的 Section
。
for section in sections {
if let i = section.offers.index(where: { $0.id == offer.id }) {
section.offers.remove(at: i) // Cannot use mutating member on immutable value: 'section' is a 'let' constant
}
}
但是当我尝试从 offers
数组中删除那个特定的 Offer
时,我收到错误消息 Cannot use mutating member on immutable value: 'section' is一个“让”常量。
我该如何解决?
最佳答案
默认情况下,for
中定义的变量是 let
并且它们不能被更改。所以你必须把它变成一个 var.
更简单的解决方案:
for var section in sections {
if let i = section.offers.index(where: { $0.id == offer.id }) {
section.offers.remove(at: i)
}
}
关于ios - 修改结构时无法在不可变值错误上使用变异成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45410907/