Сохранение отношений CoreData - PullRequest
0 голосов
/ 27 марта 2012

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

Мое приложение основано на примере Apples CoreDataBooks здесь .

Этоне обрабатывает отношения, хотяВы видите «EditingViewController.m» в примере проекта, у меня это тоже есть, там, где пользователь редактирует и сохраняет изменение выбранного атрибута объекта CoreData.

Итак, скажем, они идут и выбираютотредактировать атрибут name моего лица.Они получают текстовое поле, в котором вводят имя, а затем нажимают кнопку «Сохранить». Готово.

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

Обычно устанавливая стандартный атрибут, такая строка будет вызываться в моем коде:

[editedObject setValue:textField.text forKey:editedFieldKey];

Однако на этот раз я использую отношение, поэтому это победило 'не работает, верно?

Итак, теперь мои отношения настроены, я пробую это вместо вышеописанного:

[tableObject addGuestObject:(Person *)editedObject];

Итак, из запроса на выборку я заполнил свойс помощью выбора я выбираю выбранную таблицу и получаю этот объект, tableObject.Затем, как показал пример с CoreDataBooks, editedObject был передан в это представление, и это тот человек, о котором мы говорим, который мы редактируем.

Так вот, мне нравится неправильно его понимать.Конечно, как и в последней строке кода, мы просто берем существующий объект таблицы (который был выбран) и затем добавляем к нему существующий гостевой объект?

Но это дает мне эту ошибку и вылетает:

'NSObjectInaccessibleException', reason: 'CoreData could not fulfill a fault for '0x145640 <x-coredata://2FAD62C1-382A-4398-A4CA-02B4B41DC9A5/Table/p2>''

Не совсем уверен, что делать, чтобы исправить это.

1 Ответ

0 голосов
/ 31 марта 2012

Обычно «не удалось выполнить ошибку» означает, что объект был удален из постоянного хранилища, но у вас все еще есть ссылка на объект. Это могло произойти по ряду причин (постоянное хранилище изменилось, объект был удален другим потоком, объект принадлежал другому объекту с каскадной связью, а it был удален). Думаю, нам нужно немного больше информации об отношениях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...