龙方哲
龙方哲

Reputation: 125

how to dynamically filtering @FetchRequest in swift?

my code is like the following,and I get a execute error : Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)

    struct NewWordsView: View {
    @Environment(\.managedObjectContext) var context

    var words:FetchedResults<WordFrequency>
    @State var showDetail:Bool = false
    @State var wordIndex:Int = 0
    let bookName:String
    init(bookName:String){
        self.bookName = bookName
      
        let fetchs =  FetchRequest<WordFrequency>(entity: WordFrequency.entity(), sortDescriptors: [], predicate: NSPredicate(format: "bookName == %@", "bookName"))
        print(fetchs.wrappedValue.count)//throw a execute error
            words = fetchs.wrappedValue
        
        
    }

Upvotes: 0

Views: 75

Answers (1)

龙方哲
龙方哲

Reputation: 125

we can just define a @FetchRequest var first, and assign value later in init()

//    @FetchRequest(entity: WordFrequency.entity(), sortDescriptors: [NSSortDescriptor(keyPath: \WordFrequency.bookName, ascending: true)])
//    var words:FetchedResults<WordFrequency>
    @FetchRequest var words:FetchedResults<WordFrequency>

    let bookName:String
    init(bookName:String){
        self.bookName = bookName

        let fetchs =  FetchRequest<WordFrequency>(entity: WordFrequency.entity(), sortDescriptors: [], predicate: NSPredicate(format: "bookName ==%@",self.bookName))

        self._words = fetchs

        
    }

Upvotes: 0

Related Questions