ios - 修改结构时无法在不可变值错误上使用变异成员

标签 ios arrays swift struct

我有这个简单的结构。

struct Section {
    let store: Store
    var offers: [Offer]
}

在 VC 中,我在顶部声明了这些 Section 的数组,fileprivate var sections: [Section] = []。我在 viewDidLoad() 中添加了一些 Section 对象。

稍后,我需要从 Section 中的 offers 数组中删除一些 Offer 对象。

我遍历 sections 数组以找到包含需要删除的 OfferSection

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/

相关文章:

php - 如何在 PHP 中将数组分组并编码为 JSON?

ios - 如何列出对象正在观察的所有通知?

swift - 注销按钮崩溃

iOS 7+ : Unique identifier per device<->Store-ID (user) combination

ios - 在 swift 中使用 Realm 创建索引 TableView

iOS 沙箱/测试帐户在应用程序退出后不断要求登录

使用历史对象的 Javascript 概念

java - 如何设置Object[]的长度

ios - Swift 3.0 开始游戏

objective-c - 如何优化翻阅已下载的 50 多张图片