Je suis en train d'utiliser un NSPredicate pour rechercher la chaîne correspond à l'encontre d'un tableau d'objets CoreData généré comme tant de NSSet:correspondance de chaîne NSPredicate contre
// Grab an array of all Company projects
NSArray *array = [[company projects] allObjects];
J'utilise le prédicat suivant pour correspondre aux noms de projet, entreprise les noms ou les noms des clients avec une chaîne insensible à la casse (note: cela devrait permettre des correspondances partielles, de sorte que « App » correspondra à Apple Inc. », etc.):
(name LIKE[cd] %@) OR (ANY companies.name LIKE[cd] %@) OR (ANY companies.clients.name LIKE[cd] %@)
les relations CoreData mentionnées dans le prédicat ressembler à:
SELF -> (NSString *) name
SELF -> (NSSet *) companies -> (NSString *) name
SELF -> (NSSet *) companies -> (NSSet *) -> clients -> (NSString *) name
Chaque fois que je tente de filtrer le prédicat ci-dessus, je trouve ce qui suit dans la console:
HIToolbox: ignoring exception 'Can't do regex matching on object {(
"Apple Inc.",
"Test Co.",
Microsoft
)}.'
Si je suis il semble que les choses correctement comprendre, en essayant de faire correspondre keypath " companies.clients.name "renvoie un NSSet (ou un autre objet) où un NSString (nom) était attendu.
Qu'est-ce que je fais mal?
@distinctUnionOfSets a fait l'affaire. Merci beaucoup. – ndg