Xcode报错:Cannot assign to property: function call returns immutable value
Xcode报错:Cannot assign to property: function call returns immutable value

Xcode报错:Cannot assign to property: function call returns immutable value

在SwiftUI中,尝试给数组赋值时,发生报错:

inputs.first(where: { $0.id == symbol})?.value = string ?? ""   // 报错行

报错信息

Cannot assign to property: function call returns immutable value

这个报错的原因为Swift中的first(where:)返回的是常量(immutable)值的拷贝,不能直接修改它的属性。

解决方案:用 firstIndex(where:) 查找可变引用。

if let index = inputs.firstIndex(where: { $0.id == symbol }) {
    inputs[index].value = string ?? ""
}

为什么 first(where:)?.value = … 不行?

因为 first(where:) 返回的是一个结构体的副本(CurrencyInput 是 struct),不能修改这个副本的属性,它是只读的。

   

如果您认为这篇文章给您带来了帮助,您可以在此通过支付宝或者微信打赏网站开发者。

欢迎加入我们的 微信交流群QQ交流群,交流更多精彩内容!
微信交流群二维码 QQ交流群二维码

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注