SwiftUI:无法转换类型为';布尔';到预期的参数类型';装订<;布尔>';
为SwiftUI创建基于文本的游戏 想知道为什么我不能在字符ForEach循环中访问isSelected 获取此错误:无法在此行上将“Bool”类型的值转换为预期的参数类型“Binding”SwiftUI:无法转换类型为';布尔';到预期的参数类型';装订<;布尔>';,swiftui,Swiftui,为SwiftUI创建基于文本的游戏 想知道为什么我不能在字符ForEach循环中访问isSelected 获取此错误:无法在此行上将“Bool”类型的值转换为预期的参数类型“Binding” 切换(isOn:character.isSelected){ 变量对象声明: @Binding var characters:[字符] 代码如下: VStack { ForEach(characters) { character in
切换(isOn:character.isSelected){
变量对象声明:
@Binding var characters:[字符]
代码如下:
VStack {
ForEach(characters) { character in
HStack{
VStack(alignment:.leading) {
Text("\(character.name)")
.fontWeight(.bold)
Text("\(character.description)")
.lineLimit(10)
}
Spacer()
Toggle(isOn: character.isSelected){
Text("a")
}.labelsHidden()
您只需添加$:
Toggle(isOn: $character.isSelected){
字符
本身没有绑定,它只是一个值,它需要通过下标从字符
传输绑定,因此这里有一个解决方案(。枚举
用于访问索引和值)
ForEach(数组(characters.enumerated()),id:\.element){i,中的字符
HStack{
VStack(对齐:。前导){
文本(“\(character.name)”)
.fontWeight(.粗体)
文本(“\(character.description)”)
.lineLimit(10)
}
垫片()
切换(isOn:self.$characters[i].isSelected){/我得到了同样的错误,但在我的例子中,绑定本身是一个Bool
通过添加.wrappedValue
修复:
nameOfBinding.wrappedValue
这样做表明X不在范围内
那么您的“绑定变量”位于错误的位置或者您输入了错误的变量名。
nameOfBinding.wrappedValue