swift – 无法分配给’Bool?’类型的不可变表达式?

swift – 无法分配给’Bool?’类型的不可变表达式?,第1张

概述尝试分配新值时,编译器会抛出错误: Cannot assign to immutable expression of type 'Bool?' 我上课了: class Setting { struct Item { var text: String var selected: Bool? init(withText text: String) { 尝试分配新值时,编译器会抛出错误:
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的源视图控制器中:

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

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

如何使变量选择为可变

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

(setting.items as![Setting.Item])返回一个不可变的值.你不能在它上面执行变异功能.然而,你可以做什么,把它放在一个临时变量中,改变它,并将它分配回你的财产:
var temporaryVariable = (setting.items as! [Setting.Item])temporaryVariable[index].selected = falsesetting.items = temporaryVariable
总结

以上是内存溢出为你收集整理的swift – 无法分配给’Bool?’类型的不可变表达式?全部内容,希望文章能够帮你解决swift – 无法分配给’Bool?’类型的不可变表达式?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1031922.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存