【问题标题】:Binding var inside NSPredicate - SwiftUI在 NSPredicate 中绑定 var - 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”可用之前运行

基本上我想动态组合谓词。 非常感谢任何帮助。

【问题讨论】:

    标签: core-data swiftui nspredicate


    【解决方案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()
    猜你喜欢
    • 1970-01-01
    • 2012-07-10
    • 2021-01-29
    • 1970-01-01
    • 2021-06-07
    • 2019-11-11
    • 1970-01-01
    • 2022-11-11
    相关资源
    最近更新 更多