试图分配新值时,编译器会丢弃错误: 无法分配“布尔”类型的不变表达。 我有一个课: 类设置{ 结构项目{ var文本:字符串 ...

问题描述 投票:0回答:1
我有一个课:

class Setting { struct Item { var text: String var selected: Bool? init(withText text: String) { self.text = text self.selected = nil } } var items: Any init(items:Any) { self.items = items } }
中源查看控制器in

prepareForSegue

let item = Setting.Item(withText: user.description)
let setting = Setting(items: [item])
destinationViewController.setting = setting

在目标视图控制器:

class DestinationViewController: UITableViewController { var setting: Setting! override func viewDidLoad() { super.viewDidLoad() //this works _ = (setting.items as! [Setting.Item])[index].selected // this throws the error (setting.items as! [Setting.Item])[index].selected = false } }
我将项目宣布为任何内容,因为它可以包含[项目]或[[tockit]]。

我怎么可以使变量可变?

(我希望这不是一个重复的问题,我发现了许多类似的问题,但无法解决。)

selected

返回不变的价值。您无法在其上执行突变功能。但是,您可以将其置于临时变量中,将其变为突变,然后将其分配回您的属性:

(setting.items as! [Setting.Item])
swift immutability
1个回答
26
投票

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.