Базовые данные - отношения сущностей не работают должным образом

Я настроил свою модель данных в XCode так

EntityA

AttA1 AttA2

EntityB

AttB1 AttB2 AttB3

Затем я установил отношения

EntityA

Имя: rlpToEntityB

Назначение: EntityB

Обратное: rlpToEntityA

Для многих: проверено

EntityB

Имя: rlpToEntityA

Назначение: EntityA

Обратное: rlpToEntityB

Для многих: не проверено

то есть отношения между двумя, где каждый из EntityA может иметь много EntityB

Насколько я понимаю, если я получу подмножество EntityB, я смогу получить значения для связанных EntityA.

У меня это работает, так что я могу получить значения EntityB, используя

NSManagedObject * objMO = [fetchedResultsController objectAtIndexPath: indexPath];

strValueFromEntityB = [objMO valueForKey: @ "AttB1"];

Тем не менее, если я пытаюсь получить связанное значение из EntityA, выполнив следующее

strValueFromEntityA = [objMO valueForKey:@"AttA1"];

Я получаю сообщение об ошибке "Сущность EntityB не совместима со значением ключа для ключа Atta1"

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

Кто-нибудь может определить, что я делаю не так?

Признаюсь, я очень новичок в программировании для iPhone и особенно в Core Data, поэтому, пожалуйста, будьте осторожны со мной и предоставьте подробные объяснения или укажите мне конкретный ресурс. Я скачал примеры приложений Apple ("Основные книги", "Лучшие песни" и "Рецепты"), но до сих пор не могу разобраться.

Заранее спасибо, нев.

2 ответа

Вы не можете получить атрибуты одного объекта напрямую от другого объекта. Чтобы заимствовать свою терминологию, вы должны сделать что-то вроде этого:

(Объект B)->(отношение к A)->(атрибут A)

или же

[[objMO valueForKey: @"rlpToEntityA"] valueForKey: @"AttA1"]

Большое спасибо за ваш ответ, но теперь я решил свою проблему. хотя я уверен, что ваш ответ имеет некоторые достоинства, это не то, что я использовал для решения своей проблемы. (возможно, я не очень хорошо объяснил это, отсюда и нехватку ответов), но вкратце мне нужно было использовать метод valueForKeyPath вместо valueForKey.

Ура, Нев.

Другие вопросы по тегам