Какао: основные данные не работают - PullRequest
1 голос
/ 13 февраля 2010

У меня есть базовая модель данных Core, подобная этой:

Класс

-Имя класса (строка)

Отношение: HasDetails (ко многим) -детям

Подробнее

-Номер (int)

-Имя (строка)

Отношение: IsPartOfClass - к классу

У меня есть два табличных представления, одно для «Класса» и одно для «Подробно», но я настроил все привязки, однако, когда я добавляю новый объект в «Детали», он появляется для всех Классов, когда я этого хочу показать только один, выбранный

Ответы [ 2 ]

3 голосов
/ 14 февраля 2010

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

Это звучит , как будто у вас есть класс <---- >> Подробности (отношение один ко многим: у класса много деталей, а у деталей один класс). Это верно?

Если предположить, что взаимосвязь деталей класса называется «деталями», а взаимосвязь классов деталей называется «классом», и что все правильно настроено в вашей модели управляемых объектов (обратные связи почти всегда правильные действия), вы хотел бы следующее:

  1. Контроллер массива "Class" установлен в режим Entity, а имя объекта установлено в "Class". Управляемый объект также должен быть связан. Ваша таблица классов будет привязана к этому.
  2. Контроллер массива «Details», также установленный в режим Entity с именем объекта «Details». Вы свяжете его «contentSet» с «selection.details» контроллера массива класса. Это предоставит вашему контроллеру массива Details только данные выбранного класса. Управляемый объект также должен быть связан. Ваше табличное представление данных будет привязано к этому.

Сделав это, вызов метода -add: -insert: и -delete: (или "-remove:"?) Контроллера массива Details (например, с помощью кнопки) автоматически обработает отношение (добавит новый экземпляр "Detail" для набора деталей выбранного экземпляра "Class".

Убедитесь, что вы связали включенные состояния кнопок добавления / вставки / удаления со свойствами контроллера массива «canAdd» и «canRemove» (или это «canDelete»?), Чтобы они были отключены, если в требуемом поле нет выбора места.

0 голосов
/ 14 февраля 2010

Мэтт, позвольте мне угадать, что вы пытаетесь сделать:

Вам нужна база данных классов, каждый с именем и номером. Это не потребует ни одного отношения и будет очень легко реализовать!

В верхней правой панели представления модели данных вы бы сделали свой класс "Classes" или что-то еще, а на следующей панели справа вы нажали бы кнопку "+", чтобы "Add Attribute" для атрибутов Вы бы назвали «имя» и «номер». В крайнем правом столбце этого представления выберите «Строка» для имени и «Целое число» для числа.

В конструкторе интерфейсов вы добавите контроллер массива в представление модели, а затем выберите свой контроллер массива, перейдите в инспектор привязок, откройте нижнюю вкладку «ManagedObjectContext» и выберите «Управляемый файл владельца» объявите это в вашем View Controller и освободите его в определении метода dealloc.

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

Добавьте пару кнопок, которые вы привязываете к методам контроллера массива «Добавить» и «Удалить», и вы должны быть установлены.

...