swift - 在 SwiftUI View 中设置计算属性无法编译

标签 swift swiftui computed-properties

尝试在 SwiftUI View 中设置计算属性会出现编译器错误“无法分配给属性:‘self’是不可变的”。
我该如何调用 setter?

struct Test: View{
  @State var _s = "test"
  @State var _s2 = true
  private var s : String
  { get { _s }
    set (new)
    { _s = "no test"
      _s2 = false
      // do something else
    }
  }

  var body: some View
  { Text("\(s)")
    .onTapGesture {
      self.s = "anyting"  // compiler error
    }
  }
}

最佳答案

啊哈...我明白了。只需使用非变异集

  private var s : String
  { get { _s }
    nonmutating set (new)
    { _s = "no test"
      _s2 = false
      // do something else
    }
  }

关于swift - 在 SwiftUI View 中设置计算属性无法编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60451917/

相关文章:

arrays - 更新 TextField 中的值并相应地更新其数组索引

ios - SwiftUI 自定义图像修改器

swiftui - 如何为 Scene.handlesExternalEvents 发送事件(匹配 :) to receive?

ios - 当 newValue 没有分配任何内容时,为什么这段快速代码可以工作?

javascript - Ember.js:在服务的 Handlebars 中使用计算属性

ios - 使用 Slider 删除 UITableView 操作,如按钮按下或滚动

ios - Swift 错误 Anyobject 没有名为 'Generator' 的成员

Vue.js + Vuetify 在 v-for 中使用 v-data-table

ios - 在 Objective-c 中使用通用扩展 swift 类

ios - 使用结构作为 NSDictionary 的键