gpt4 book ai didi

swift - 无法分配给类型为 'Bool?' 的不可变表达式

转载 作者:IT王子 更新时间:2023-10-29 05:48:26 25 4
gpt4 key购买 nike

编译器在尝试分配新值时抛出错误:

Cannot assign to immutable expression of type 'Bool?'

我有一个类:

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
}
}

prepareForSegue 的源 View Controller 中:

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

在目标 View Controller 中:

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
}
}

我将项目声明为 Any,因为它可以包含 [Items] 或 [[Items]]。

如何使变量 selected 可变?

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

最佳答案

(setting.items as! [Setting.Item]) 返回一个不可变值。您不能对其执行变异功能。但是,您可以做的是将其放入一个临时变量中,对其进行修改,然后将其分配回您的属性:

var temporaryVariable = (setting.items as! [Setting.Item])

temporaryVariable[index].selected = false

setting.items = temporaryVariable

关于swift - 无法分配给类型为 'Bool?' 的不可变表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33056612/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com