Выборка объекта в дочерних MOC UIManagedDocument MOC, отношение ко многим пусто - PullRequest
1 голос
/ 16 ноября 2011

Мое приложение использует UIManagedDocument для обработки своих данных с помощью Core Data. Между двумя объектами: Post и Tag есть связь «многие-многие».

Когда я хочу отредактировать публикацию, я создаю временный NSManagedObjectContext, устанавливаю его parentContext в управляемый UIManagedDocument управляемогоObjectContext и извлекаю публикацию, используя objectWithID: метод.

Допустим, это:

  • MOC1 - это NSManagedObjectContext UIManagedDocument
  • MOC2 - это временный NSManagedObjectContext для редактирования сообщения
  • post1 - это сообщение в MOC1
  • post2 - это сообщение в MOC2

Вот проблема:

  • post1.tags возвращает 2 тега
  • post2.tags возвращает 0 тегов

Все свойства post2 извлекаются правильно, за исключением тегов отношения ко многим.

Почему у post2.tags нет тега?

Ответы [ 2 ]

2 голосов
/ 09 декабря 2011

После дальнейшего тестирования, я думаю, это связано с идентификаторами временных и постоянных объектов; если мы видим то же самое, то я рискну предположить, что объекты, возвращаемые отношением «многие-многие» в MOC1, будут иметь временные, а не постоянные идентификаторы.

Предположительно, в MOC2 вы делаете несколько вставок для создания объектов в отношении ко многим. Когда вы закончите вставку, и непосредственно перед сохранением, получите массив объектов, которые были вставлены через [[moc2 pasteObjects] allObjects]. Передайте этот массив [moc2 receivePermanentIDsForObjects: error], используя массив отслеживания. Затем позвоните сохранить на MOC2.

Кажется, это работает для меня. Похоже, что по умолчанию вызов save в MOC2 фактически не приводит к созданию постоянных идентификаторов объектов в MOC1.

0 голосов
/ 09 декабря 2011

Хотелось бы, чтобы у меня был ответ на этот вопрос, но, насколько я смог определить, это ошибка. В этом сценарии поиск отношений ко многим просто не работает.

Честно говоря, кажется немного сложным поверить, что это могло бы избежать тестирования, но я никак не мог заставить это работать.

...