我有这个简单的结构。
struct Section {
let store: Store
var offers: [Offer]
}
在VC中,我在顶部声明了这些
Section
的数组,就像fileprivate var sections: [Section] = []
一样。然后在Section
中添加一些viewDidLoad()
对象。稍后,我需要从
Offer
中的offers
数组中删除一些Section
对象。我遍历
sections
数组以查找包含需要删除的Section
的Offer
。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
}
}
但是,当我尝试从
Offer
数组中删除特定的offers
时,出现错误不能对不可变值使用变异成员:'section'是一个'let'常量。我该如何解决?
最佳答案
默认情况下,在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/