Как использовать NSPredicate для ловли дочерних объектов?

Я являюсь новым, чтобы удалить сердцевину данных и попытаться получить все дочерние объекты различных типов с одним запросом. Скажите, что существует тип "Животных", столь же родительский и "CAT", "Собака" и "Птица" как дети. Я хотел бы получить и кошек и собак, но не Птиц в едином запросе, возвращенном, поскольку Животное возражает. Действительно ли это возможно?

7
задан cocoapriest 11 March 2010 в 01:02
поделиться

3 ответа

Управляемые объекты имеют свойство сущности , поэтому вы должны иметь возможность комбинировать решение Кевина Сильвестра с предикатом объекта . name! = "Птица" .

5
ответ дан 7 December 2019 в 05:21
поделиться

Да, это возможно:

// 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) { }
3
ответ дан 7 December 2019 в 05:21
поделиться

Хотя этот ( entity.name! = "Bird" ) может работать, если у вас есть только "Cat", "Dog", и «Птица», это не сработает, если вы позже добавите больше «Животных». Вы также можете использовать entity.name == "Dog" && entity.name == "Cat"

Это случай "... у вас когда-нибудь будут другие животные в вашем случае?"

Удачи =)

0
ответ дан 7 December 2019 в 05:21
поделиться