Core Data + SwiftUI:无法将“Bool”类型的值转换为预期的参数类型“Binding<Bool>”
Posted
技术标签:
【中文标题】Core Data + SwiftUI:无法将“Bool”类型的值转换为预期的参数类型“Binding<Bool>”【英文标题】:Core Data + SwiftUI: Cannot convert value of type 'Bool' to expected argument type 'Binding<Bool>' 【发布时间】:2020-06-16 07:21:49 【问题描述】:我需要一些带有切换的列表。我从 Core Data 实体获得的列表数据。
这是我的代码
// get array products from Core Data
@FetchRequest(fetchRequest: Products.getAllProducts()) var myProducts: FetchedResults<Products>
// here I try to show List
List(myProducts.indices) index in
Toggle(isOn: self.myProducts[index].productStatus)
Text(self.myProducts[index].productName)
属性 isOn 给我错误:无法将类型“Bool”的值转换为预期的参数类型“Binding”
需要做什么?
【问题讨论】:
在我看来就像是 SwiftUI: Cannot convert value of type 'Bool' to expected argument type 'Binding<Bool>' 的副本。 我看到了,但这个决定对我没有帮助。我认为问题出在 Core Data 的数据格式上。但是我不明白问题是什么? ***.com/help/minimal-reproducible-example 【参考方案1】:我找到了适合我的情况的解决方案
ForEach(myProducts.indices) index in
Toggle(isOn:
Binding<Bool>
(get: return self.myProducts[index].productStatus,
set: p in self.myProducts[index].productStatus = p
))
Text(self.myProducts[index].productName)
.onTapGesture
self.myProducts[index].productStatus.toggle()
do
try self.managedObjectContext.save()
catch
print(error)
只有我不明白一行代码: 设置: p in self.myProducts[index].productStatus = p
谁能解释一下?
【讨论】:
以上是关于Core Data + SwiftUI:无法将“Bool”类型的值转换为预期的参数类型“Binding<Bool>”的主要内容,如果未能解决你的问题,请参考以下文章
SwiftUI Preview 因 Core Data 'NSInvalidArgumentException' 而崩溃
SwiftUI Core Data 在 DetailView 中绑定 TextFields