53 votes

Comment configurer un NSPredicate pour rechercher des objets ayant un attribut nil

J'ai un ManagedObject class et l'un des membres de la classe est un NSDate . Je souhaite afficher tous les objets de la classe pour lesquels la date n'est PAS définie. J'ai essayé d'utiliser un prédicat comme ceci:

 NSPredicate *predicate = [NSPredicate predicateWithFormat: @"(date = NIL)"];
 

Mais j'obtiens toujours des objets où le date est défini. Quelle est la bonne façon de configurer un prédicat pour cela?

103voto

Christopher Pickslay Points 9449

Je pense que c'est un problème de sensibilité à la casse. Vous pouvez utiliser "nil" ou "NULL", mais pas "NIL". Cela fonctionne bien pour moi:

 NSPredicate *eventWithNoEndDate = [NSPredicate predicateWithFormat:@"endDate = nil"];
 

10voto

mezulu Points 430

Deviner. Ne pouvait pas le faire en utilisant un prédicat avec un format de chaîne, donc essayé un prédicat avec un modèle et cela a fonctionné. Voici le code qui m'a donné des objets pour lesquels endDate était défini sur NULL:

 NSPredicate *predicate = [NSPredicate predicateWithFormat:@"endDate = $DATE"];
predicate = [predicate predicateWithSubstitutionVariables:
                   [NSDictionary  dictionaryWithObject:[NSNull null] forKey: @"DATE"]];
 

3voto

Jerry Juang Points 11

https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Predicates/Articles/pUsing.html#//apple_ref/doc/uid/TP40001794-SW4

le code suivant devrait fonctionner

 predicate = [NSPredicate predicateWithFormat:@"firstName = nil"];
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X