Ich habe Objekte in meinem Coredata gespeichert, die wie folgt aussehen:Coredata fetchRequest mit Prädikat überspringt falsch NULL-Werte
idnametype 1 cat aaa 2 dog bbb 3 ape NULL
ich diese Objekte auf der Eigenschaft „type“ wie folgt basierend Holen bin:
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];
Also, ich versuche nur alle Objekte zu holen, wo der Typ nicht wie "aaa" ist.
Die Abrufanforderung weglässt unerwartet nicht nur die Gegenstände, die mit „aaa“ Typen wie im Prädikat angegeben, sondern auch die Objekte, bei denen der Typ nicht gesetzt ist (null), was zu dem folgenden:
idnametype 2 bar bbb
statt dessen, was ich erwarten würde:
idnametype 2 dog bbb 3 ape NULL
Das gleiche Problem tritt auf, wenn ich Prädikat Format verwenden: NOT (type IN {"aaa", "bbb"})
. Welches ist die Art, wie ich das brauche? Dieses Prädikat führt dazu, dass keine Datensätze abgerufen werden.
Ich verstehe nicht, warum dies passieren könnte, denn wenn ich kein Prädikat angeben, werden alle Objekte richtig abgerufen. Objekte mit NULL-Typ erhielten geholt richtig, wenn ich das Prädikat ändern würde:
[NSPredicate predicateWithFormat:@"type = null"];
Bitte beachten Sie; alles oben illustriert nur, worauf das Problem hinausläuft. Mein tatsächlicher Code ist komplizierter und verwendet einfach das Prädikat Format: type != "aaa" OR type = null
ist etwas, das ich gerne vermeiden würde, wenn möglich.
Jede Hilfe sehr geschätzt!
In der Tat, danke dafür. Also denke ich, dass es keinen Weg gibt, den Prädikaten den Null-Test hinzuzufügen. – Tonnie