Come utilizzare NSPredicate per catturare gli oggetti figlio?
-
19-09-2019 - |
Domanda
Sono nuovo di dati fondamentali e cercare di ottenere tutti i bambini oggetti di vario tipo, con una query. Dire che c'è un tipo di "Animal", come genitore e "gatto", "Dog" e "Bird", come i bambini. Mi piacerebbe ottenere entrambi i cani e gatti, ma non uccelli in un'unica query restituiti come oggetti animali. È possibile?
Soluzione
Gestito oggetti hanno una proprietà entity
, così si dovrebbe essere in grado di combinare la soluzione di Kevin Sylvestre con un predicato di entity.name != "Bird"
Altri suggerimenti
Sì, è possibile:
// 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) { }
Anche se questo (entity.name != "Bird"
) può funzionare se hai solo "gatto", "Dog" e "Bird", non funziona se si aggiungono più tardi "Animali". È inoltre possibile utilizzare entity.name == "Dog" && entity.name == "Cat"
E 'un caso di "... sarà mai avere qualsiasi altra, nel tuo caso, gli animali?"
Buon divertimento =)