Интересный вопрос, достойный некоторого эксперимента (при отсутствии лучшей помощи).
Я пробовал этот предикат на управляемом объекте:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"entity.attributesByName.allKeys CONTAINS %@", @“nameOfAttrSought”];
Но я получил эту ошибку: «невыполненная генерация SQL для предиката. ”
Что наводит меня на мысль, что SQL не готов копаться в NSArrays, что вы получаете, запрашивая NSEntityDescription для его имен атрибутов.может придумать предикат, который будет делать то, что вы хотите через запрос прямой выборки, я бы предложил этот обходной путь:
Определить сущность Namer
, которая имеет одну строку attr named
и to-manyотношения members
.Создайте один из них для каждого из возможных атрибутов, которые могут иметь ваши целевые дочерние объекты.Затем дайте ребенку соблазнить отношение ко многим к Namer
, которое называется namers
(обратное отношение members
).После вставки добавьте соответствующие «имена» в это отношение.Тогда вы могли бы сделать предикат извлечения следующим образом:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@“ANY namers == %@“, namerSought];
// ("namerSought" is an instance of Namer.)