首页 > 解决方案 > 在 NSPredicate 中绑定 var - SwiftUI

问题描述

我正在尝试在我的 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”;属性初始化程序在“自我”可用之前运行

基本上我想动态组合谓词。任何帮助都深表感谢。

标签: core-dataswiftuinspredicate

解决方案


像这样在 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
}

推荐阅读