【问题标题】:how to fix the error: 'property initializers run before' self 'is available' in @FetchRequest如何修复错误:@FetchRequest 中的“属性初始化程序在”自我“可用”之前运行
【发布时间】:2021-01-09 21:26:17
【问题描述】:

我有以下结构,在@FetchRequest 中我得到一个谓词错误,var 'nomAcuariL',我不知道如何解决这个错误,如何初始化属性?

错误:

enter image description here

 import SwiftUI
    
    struct Llist: View {
        
        var nomAcuariL : String
        var parametres : Parametres
        
        @Environment(\.managedObjectContext) var moc
    
        
        @FetchRequest(entity: Parametres.entity(),sortDescriptors: [NSSortDescriptor(keyPath: \Parametres.nomParametres, ascending: true)], predicate: NSPredicate(format: "nomParametres = %@", nomAcuariL)) var contactos: FetchedResults<Parametres>
    
        
        var body: some View {
            
            List{
                ForEach(contactos, id:\.self){ contact in
                    Text("\(contact.nomParametres ?? "")")
                }
            }
        }
    }

【问题讨论】:

标签: core-data swiftui nspredicate nsfetchrequest


【解决方案1】:

您不能在 FetchRequest 中使用实例成员 nomAcuariL,因为它还没有被初始化。换句话说,当您尝试初始化 FetchRequest 时,它并不存在。您需要将该值通过某个已经存在的对象传递给 fetch 请求。尝试使用可以在其中实例化包含数据的类或结构,或者简单地使用文字字符串。

【讨论】:

  • 我该怎么做呢?我不知道该怎么做
  • 想到了使用共享的 ObservedObject。设置一个单例(基本上)类,将数据放入其中并使用它。然而,这是一个完全不同的问题。
  • 你不能给出答案并说这是一个完全不同的问题。单身不是去这里的方式。尝试使用动态谓词。在 .onAppear 你可以设置 contactos.nsPredicate = ... 你可能需要 DispatchQueue.main.async {} 围绕它。
猜你喜欢
  • 2021-09-13
  • 2020-07-18
  • 2017-09-18
  • 2021-03-19
  • 1970-01-01
  • 2021-04-03
  • 1970-01-01
  • 2021-10-02
  • 2021-10-05
相关资源
最近更新 更多