В сущности Core Data, как я могу использовать атрибут исходной сущности в предикате его извлеченного свойства? - PullRequest
3 голосов
/ 09 марта 2011

Я использую визуальный редактор для создания модели базовых данных. Я не могу понять, как установить предикат извлеченного свойства, чтобы он использовал атрибуты исходного объекта в предикате.

Например, у меня есть EntityA с атрибутом searchId. У меня также есть EntityB с атрибутом id. Я хочу найти все экземпляры EntityB, чей id равен атрибуту EntityA searchId. Когда я пытаюсь отредактировать предикат, раскрывающийся список для левой и правой стороны содержит только ключи для пункта назначения, который в данном случае равен EntityB, и ни один из ключей не выбирается из EntityA.

Я знаю, что вы можете просто создать предикат программно, но мне было интересно, есть ли способ сделать это с помощью визуального редактора.

1 Ответ

6 голосов
/ 09 марта 2011

Это немного больно.

Сначала в элементе управления редактора предикатов щелкните пустое пространство справа от последнего поля предиката и выберите «variable». Затем введите «FETCH_SOURCE.attributeName» в поле.

FETCH_SOURCE (или $ FETCH_SOURCE в коде) - это специальная переменная, которая указывает объект, инициирующий выборку для свойства fetched. Существует также FETCHED_PROPERTY ($ FETCHED_PROPERTY), которая будет возвращать фактический объект NSFetchedPropertyDescription.

Итак, ваш предикат в тексте будет выглядеть так:

id==$FETCH_SOURCE.searchId

Apple, очевидно, не очень гордится этой функциональностью, потому что они спрятали любые ссылки на нее глубоко в мифических катакомбах Купертино. Мне понадобилось четыре дня, чтобы понять это в первый раз.

...