Проблема сохранения Magic Record

У меня есть следующая проблема:

Во-первых... я использую MagicalRecord для всего CoreData

  • У меня есть две сущности: A и B
  • Они имеют отношение друг к другу
  • Я создаю один экземпляр Entity A
  • Я создаю несколько экземпляров объекта B и устанавливаю отношение
  • I don't call [[NSManagedObjectContext defaultContext] save];
    • It's fine
    • Отношение в порядке... Я могу проверить его с помощью метода findByAttribute
  • If I call this save then the relation is destroyed...
    • the same check using findByAttribute does not find results any more

Я совершенно не понимаю, что я делаю неправильно, или это ошибка в CoreData/MagicalRecord...

Я сделал пример проекта, показывающий проблему. https://github.com/bliblablo/MagicalRecordsProblem

Вы можете увидеть проблему, выполнив следующие действия:

  • нажмите "создать"
  • нажмите "добавить"
  • нажмите "проверить"
  • см. вывод журнала для результатов
  • нажмите "сохранить"
  • снова нажимаем "проверить" и видим проблему в логе :)

Любая помощь очень ценится!!! Большое спасибо!


person Georg    schedule 27.06.2012    source источник
comment
Где образец проекта? Я могу с уверенностью сказать вам, что это не будет ошибкой в ​​​​Core Data!   -  person Nick Dowell    schedule 03.07.2012
comment
Извините... Я только что обновил описание проблемы. Вот ссылка: github.com/bliblablo/MagicalRecordsProblem   -  person Georg    schedule 03.07.2012


Ответы (2)


Похоже, у меня была проблема с временными ObjectID, которые не обновлялись в контексте по умолчанию.

См. мой ответ на NSPredicate не выполняется для получения подробной информации.

Если вы еще не разобрались, попробуйте проверить ObjectID экземпляров NSManagedObject в разных точках. Особенно, если вы (или Magical Record) используете объект как часть NSPredicate для последующих выборок.

person Otto    schedule 11.07.2012
comment
Спасибо, Отто... Я обошел свою проблему, используя уникальный идентификатор, полученный от веб-службы, откуда поступают данные... Поэтому вместо вызова выборки всего, где родителем является этот объект, теперь я использую выборку всего, где parent.uniqueID — это уникальный ID этого объекта. Это сработало для меня! Но спасибо за объяснение! Действительно ценю это! - person Georg; 12.07.2012
comment
Думаю, это скорее обходной путь, чем реальное решение. Что меня действительно беспокоит, так это то, что если вы выполните сброс перед получением данных, даже использование «выбрать все, где родителем является этот объект», будет работать. Итак, определенно ошибка Core Data (или MagicalRecord). Я хотел бы попробовать полностью уничтожить этого помощника и повеселиться по старинке. - person Fabiano Francesconi; 12.07.2012
comment
@FabianoFrancesconi Я уверен, что это не Волшебная запись, но. Я достаточно уверен, что это действительно ошибка в Core Data. Возможно, я все еще неправильно понимаю, что я должен делать (может быть, прослушивать уведомления?), но это работает достаточно хорошо. :) - person Otto; 13.07.2012
comment
Не странно ли, что только у меня и у тебя такие проблемы? Я имею в виду, что это довольно яркая ошибка. Я думаю, что мы застряли в каком-то злоупотреблении служебным положением. Я беспокоюсь, потому что приложение работает сейчас, но может случиться так, что позже в будущем оно может внезапно остановиться, и нам придется вернуться и пересмотреть то, что мы сделали. - person Fabiano Francesconi; 13.07.2012
comment
Нас как минимум трое. :) Немного переживаю, но отладил с первого раза, могу и еще раз. Я планирую убедиться, что у меня последняя версия Magical Record перед отправкой, просто чтобы быть уверенным. - person Otto; 14.07.2012
comment
Насколько я могу судить, может быть, мы не уделяем должного внимания Core Data, и он будет лениво загружать весь NSSet, который возвращается из метода ассоциации. Но тогда у меня все еще нет NSFetchedResultsController. - person Otto; 14.07.2012

Я думаю, что это не ошибка MR. Это ошибка из основных данных. Смотрите этот пост. http://wbyoung.tumblr.com/post/27851725562/core-data-growing-pains

person angelokh    schedule 10.08.2012