J'ai des objects stockés dans mon CoreData qui ressemblent à ceci:
type de nom d' identifiant 1 chat aaa 2 chien bbb 3 ape NULL
Je récupère ces objects basés sur la propriété "type" comme ceci:
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:self.entityName]; fetchRequest.predicate = [NSPredicate predicateWithFormat:@"type != %@", @"aaa"]; fetchRequest.fetchBatchSize = 100; fetchRequest.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"type" ascending:YES]]; NSFetchedResultsController *fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:@"section" cacheName:nil]; fetchedResultsController.delegate = self; NSError *error = nil; [fetchedResultsController performFetch:&error];
Donc, j'essaie simplement d'aller chercher tous les objects où le type n'est pas "aaa".
La requête d'extraction omet de manière inattendue non seulement les objects avec des types "aaa" comme spécifié dans le prédicat, mais aussi les objects où le type n'est pas défini (null), ce qui entraîne ce qui suit:
type de nom d' identifiant 2 bar bbb
Au lieu de ce à quoi je m'attendais:
type de nom d' identifiant 2 chien bbb 3 ape NULL
Le même problème se produit lorsque j'utilise le format de prédicat: NOT (type IN {"aaa", "bbb"})
. Ce qui est la façon dont je vais avoir besoin de cela. Ce prédicat ne génère aucun logging.
Je ne vois pas pourquoi cela pourrait se produire, car si je ne spécifie pas de prédicat, tous les objects sont récupérés correctement. Les objects avec des types NULL sont récupérés correctement si je change le prédicat en:
[NSPredicate predicateWithFormat:@"type = null"];
Veuillez noter tout ce qui précède illustre juste ce que le problème se résume à. Mon code actuel est plus compliqué et utilise simplement le format de prédicat: type != "aaa" OR type = null
est quelque chose que j'aimerais éviter si possible.
Toute aide grandement appréciée!
C'est un comportement désigné. Voir ici: https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Predicates/Articles/pUsing.html#//apple_ref/doc/uid/TP40001794-SW1