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
}
}
中源查看控制器inprepareForSegue
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])