NSManagedObject с обязательной связью - PullRequest
1 голос
/ 30 января 2012

Возможно ли, чтобы управляемый объект имел отношения с необязательным необязательным?

Если так, как я могу вставить его без validateForInsert: fail?Я хочу, чтобы отношения были обязательными, но я не могу установить соединение между текущим и другим объектом до его вставки, потому что два объекта, которые я хочу подключить, находятся в разных контекстах.

Конкретный пример: У меня вообще один МОС.Допустим, у меня Person сохранено в контексте.
Теперь я хочу создать новый, поэтому я создаю экземпляр Person, но не вставляю его в контекст.Когда пользователь выбирает брата из какого-либо табличного представления, и я устанавливаю свойство 'brother', обратное отношение будет пытаться установить связь между объектом, сохраненным в MOC, и тем, который еще не существует в MOC, что приведет кприложение вылетает.
Мой вопрос: если отношения "брат" будут не необязательными, могу ли я даже создать и вставить нового человека?

Ответы [ 2 ]

0 голосов
/ 01 февраля 2012

Какой глупый вопрос о себе.

Конечно, вы можете вставить объект в контекст, не вызывая ошибки. Затем вы можете установить (обязательные) отношения.
Проверка отношений и свойств происходит только при реальной попытке сохранить контекст.

Однако в моем приложении я не вставлял сущность до тех пор, пока не завершился NewItemVC. Я вызвал -validateForInsert: для создаваемого объекта, чтобы проверить, действительно ли он включает / выключает кнопку «Готово».
Поскольку я не могу установить обязательные отношения, не вставив их, это не очень хорошая идея, я должен подумать о чем-то новом.

0 голосов
/ 30 января 2012

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

Так, например, если у вас есть NSFetchedResultsController, вы можете заставить его получать уведомления об изменении контекста управляемого объекта.У вас может быть два постоянных хранилища, чтобы вы могли ограничить уведомление о некоторых изменениях.(Простым и, возможно, не слишком реалистичным примером может быть список результатов поиска в одном контексте, но список избранного в другом контексте. Вы можете изменить элемент в списке результатов, сделав его избранным.уведомление о переходе к контексту, на который ссылаются список избранного и контроллер выборок результатов, при условии, что на список результатов все равно не влияют. Таким образом, два контекста имеют смысл. Но оба контекста ссылаются на одно и то же постоянное хранилище.)

Что еще более важно, если объекты, на которые ссылаются в двух контекстах, содержатся в одном и том же постоянном хранилище, у них все еще сохраняются все свои отношения и процесс управления этими отношениями.

Так что я непонять ваше утверждение, что объекты находятся в разных контекстах.Можете ли вы быть более конкретным?

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