Я синхронизируюсь с базой данных MySQL.
Первоначально я собирался пройтись по всем моим новым / измененным объектам и установить все внешние ключи для этого объекта, а затем выполнить следующий объект и так далее ... Но это много запросов на выборку.
Так что вместо этого я хотел просмотреть все мои новые / измененные объекты и установить внешние ключи по одному. Итак, первый проход по моим объектам устанавливает fk1, мои следующие наборы fk2, и так далее ...
Круто, выборочные запросы резко сокращены. Теперь мне любопытно, смогу ли я использовать эти сеттеры. Они не зависят друг от друга, но они изменяют один и тот же объект, даже если они устанавливают только одно отношение, а это другое отношение. Говоря в терминах git, эти изменения могут быть «объединены» вместе без какого-либо конфликта, но возможно ли передать изменения в одном дочернем managedObjectContext (childContext: save) до parentManagedObjectContext (parent: executeBlock ^ {parent: save}) и извлечь это в другом, другом дочернем элементе managedObjectContext (???)? Или политика слияния примет только одну версию объекта childContext и фактически оставит другие fks без изменений.
Я знаю, что это существует: NSManagedObjectContext / refreshObject: mergeChanges:
Но это на объекте на уровне объекта. Это вызовет кучу уловок? Или это обновит весь мой контекст сразу / в пакетном режиме?
Следуя предложению Apple отсюда:
https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/Articles/cdImporting.html
Я создал / обновил свои значения до того, как начал устанавливать какие-либо отношения, поэтому все объекты уже существуют, прежде чем я попытаюсь указать на них какие-либо отношения.
В сторону: у нас есть пара приложений, которые могут извлечь выгоду из параллелизма, потому что они разбрасывают значительный объем данных, а с четырехъядерными приложениями для iPad это действительно поможет со временем, которое занимает первоначальная синхронизация.