在 NSPredicate 中绑定 var - SwiftUI
Posted
技术标签:
【中文标题】在 NSPredicate 中绑定 var - SwiftUI【英文标题】:Binding var inside NSPredicate - SwiftUI 【发布时间】:2021-03-27 06:26:45 【问题描述】:我正在尝试在我的 Codre Data 过滤器中编写一个动态过滤器,如下所示(使用 SwiftUI):
@State var NumberOfRooms: Int
init(NumberOfRooms: Int)
self.NumberOfRooms = NumberOfRooms
@FetchRequest(entity: Listing.entity(),sortDescriptors:[NSSortDescriptor(keyPath: \Listing.publishdate, ascending: false),],predicate: NSPredicate(format: "category == %@ AND rooms ", "House", "\($NumberOfRooms)"))
在视图中我想像这样修改变量的值:
Text("2")
.onTapGesture
self.NumberOfRooms = 2
我在 NSPredicate 收到错误:
不能在属性初始化器中使用实例成员“$NumberOfRooms”;属性初始化器在“self”可用之前运行
基本上我想动态组合谓词。 非常感谢任何帮助。
【问题讨论】:
【参考方案1】:像这样在 init 中初始化您的请求。
var fetchRequest: FetchRequest<Listing>
@State var NumberOfRooms: Int = 10
init(NumberOfRooms: Int)
fetchRequest = FetchRequest<BlogIdea>(entity: Listing.entity(),sortDescriptors:[],predicate: NSPredicate(format: "category == %@ AND rooms ", "House", "\(NumberOfRooms)"))
self.NumberOfRooms = NumberOfRooms
【讨论】:
我收到错误:变量“self.fetchRequest”在初始化之前使用 和:从初始化程序返回而不初始化所有存储的属性 检查更新!! 现在我得到:在范围内找不到“NSEntityDescription” 传递你的实体Listing.entity()
以上是关于在 NSPredicate 中绑定 var - SwiftUI的主要内容,如果未能解决你的问题,请参考以下文章
在 NSPredicate 中使用 ALL/ANY/NONE
使用 NSPredicate 和数组进行 cloudKit 搜索