Wie NSPredicate verwenden Kind-Objekte zu fangen?
-
19-09-2019 - |
Frage
Ich bin neu auf Kerndaten und versuche, alle Kinder mit einer Abfrage-Objekten verschiedenen Typen zu bekommen. Sagen, dass es ein „Animal“ Typ als Eltern und „Cat“, „Dog“ und „Bird“, wie Kinder. Ich mag die beiden Katzen und Hunde bekommen, aber nicht Vögel in einzelner Abfrage als Tier Objekte zurückgegeben. Ist es möglich?
Lösung
Verwaltete Objekte haben eine entity
Eigenschaft , so sollten Sie in der Lage zu kombinieren Kevin Sylvestre Lösung mit ein Prädikat von entity.name != "Bird"
Andere Tipps
Ja, es ist möglich:
// Load delegate from application and context from delegate.
SampleAppDelegate *delegate = [[UIApplication sharedApplication] delegate];
NSManagedObjectContext *context = delegate.managedObjectContext;
// Create new request.
NSFetchRequest *request = [[NSFetchRequest alloc] init];
// Create entity description using delegate object context.
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Animal" inManagedObjectContext:context];
// Set entity for request.
[request setEntity:entity];
[request setIncludesSubentities:YES];
// Load array of documents.
NSError *error;
NSArray *animals = [context executeFetchRequest:request error:&error];
// Release request.
[request release];
// Access array.
for (id animal in animals) { }
Während diese (entity.name != "Bird"
) arbeiten können, wenn Sie nur „Katze“ haben, „Dog“ und „Bird“, funktioniert es nicht, wenn Sie später mehr „Animals“ hinzufügen. Sie können auch entity.name == "Dog" && entity.name == "Cat"
verwenden
Es ist ein Fall von „... werden Sie jemals andere haben, in Ihrem Fall, Tiere?“
Viel Spaß =)