У меня есть то, что я считал простой проблемой. Я пытаюсь отфильтровать некоторые основные данные, где у меня есть родительский объект, который имеет отношение «многие» к дочернему объекту, и этот дочерний объект имеет идентификатор строки. Я хочу получить все родительские объекты, где ни один дочерний объект не имеет определенного идентификатора.NSPredicate filter to-Many с дочерним объектом
Я попытался !(ANY... LIKE)
, а также !(ANY..==)
и NONE
с как и == и ALL children.id != otherid
Мой выполнение запроса выглядит следующим образом:
NSFetchRequest* fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Parent"];
NSPredicate* predicate = [NSPredicate predicateWithFormat:@"NONE children.id LIKE %@",otherID];
[fetchRequest setPredicate: predicate];
NSError* error;
NSArray* allParents = [[DataManager context] executeFetchRequest:fetchRequest error:&error];
//sanity check the predicate
for (Parent* p in allParents) {
for (Child* c in p.children) {
if([c.id isEqualToString:otherID]){
NSLog(@"PREDICATE FAIL!");
}
}
}
Я пропускаю что-то с NSPredicate? Разрешен ли этот тип фильтрации для CoreData? Лучшее решение?
возможно дубликат [Основные данные NSPredicate to-Many Relationship] (http://stackoverflow.com/questions/15722930/core-data-nspredicate-with-to- многие отношения) - Резюме: Это ошибка основных данных, и вы можете использовать SUBQUERY в качестве обходного пути. –