2012-08-26 1 views
5

Non completamente sicuro del motivo per cui non funziona ora, ho pensato che funzionasse in precedenza. Qualcuno vede un problema con questa costruzione FetchRequest?NSPredicate 'Il lato sinistro per un operatore ALL o ANY deve essere un NSArray o NSSet'

- (NSArray *)entriesForDate:(NSDate *)date { 
    NSFetchRequest *request = [[NSFetchRequest alloc]initWithEntityName:@"Entry"]; 
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY addedOn.unique like %@", [T3Utility identifierForDate:date]]; 
    request.predicate = predicate; 

    NSError *error = nil; 
    NSArray *matches = [self.database.managedObjectContext executeFetchRequest:request error:&error]; 

    return matches; 
} 

Anche in questo caso, sono sicuro al 99% che questo codice ha lavorato fino a poco tempo, in modo im pensando forse c'è qualcos'altro nel mio codice da qualche parte. . .ma quando lo eseguo attraverso il debugger questo è dove si blocca. Ecco il mio errore:

Il lato sinistro di una o OR operatore deve essere sia un NSArray o nsset

Tutte le idee?

grazie!

+0

Quali sono gli attributi e le relazioni delle entità? –

risposta

8

Sembra che addedOn non sia un rapporto di molti. Assicurati di utilizzare i nomi corretti dei tuoi attributi/relazioni nel predicato. Inoltre, si noti che non è possibile utilizzare una relazione uno a uno in un predicato "ANY".

+2

+1 in particolare, sia 'addedOn' deve essere to-many, con' unique' che è una proprietà (o una relazione to-one), o 'addedOn' deve essere to-one e' unique' deve essere un -molte relazioni. –