основные данные, приводящие к конфликту слияния с одним MOC и основным потоком, используемым для основных данных - PullRequest
2 голосов
/ 05 мая 2011

Я использую данные ядра с одним NSManagedObjectContext и выполняю все операции с данными ядра в основном потоке.Новая и старая строки, приведенные в описании ошибки, идентичны, и я надеюсь, что кто-то может объяснить, почему я получаю конфликт слияния.Установка политики слияния на перезапись приводит к тому, что приложение запускается в симуляторе с высокой загрузкой процессора и перестает отвечать на запросы.

Однако, когда я пытаюсь обновить управляемые объекты в одном объекте, приложение вылетает со следующей ошибкой:

NSMergeConflict (0x7144390) for NSManagedObject (0x7225db0) with objectID '0x721c0a0 <x-coredata://94349DC2-C441-4102-9C65-60737E940135/Locations/p1>' with oldVersion = 2 and newVersion = 3 and 
old cached row = {\n    AccountInfo = \"0x721bae0 <x-coredata://94349DC2-C441-4102-9C65-60737E940135/Account/p1>\";\n    City = \"<null>\";\n    Country = \"Russian Federation\";\n    EntryStatusId = \"<null>\";\n    ExitStatusId = \"<null>\";\n    IsCorporateLocation = 1;\n    IsVisible = 1;\n    Latitude = 50;\n    LocationId = 10003;\n    Longitude = 40;\n    Name = \"Test Location\";\n    Radius = 304;\n    State = \"Province of Voronezh\";\n    Street = \"<null>\";\n    Units = METER;\n    Zip = \"<null>\";\n} and 
new database row = {\n    AccountInfo = \"0x7144560 <x-coredata://94349DC2-C441-4102-9C65-60737E940135/Account/p1>\";\n    City = \"<null>\";\n    Country = \"Russian Federation\";\n    EntryStatusId = \"<null>\";\n    ExitStatusId = \"<null>\";\n    IsCorporateLocation = 1;\n    IsVisible = 1;\n    Latitude = 50;\n    LocationId = 10003;\n    Longitude = 40;\n    Name = \"Test Location\";\n    Radius = 304;\n    State = \"Province of Voronezh\";\n    Street = \"<null>\";\n    Units = METER;\n    Zip = \"<null>\";\n}

Обновление: ошибка не возникает, если я сохраняю MOC после обновления каждого объекта, но происходит, если я обновляю все объекты и затем сохраняю MOC.Кто-нибудь знает, почему это происходит?

Ответы [ 2 ]

0 голосов
/ 30 июля 2011

Возможно, чтобы Базовые данные автоматически обрабатывали эти конфликты, а не создавали Исключение. Смотрите это сообщение: http://pauloliveira.net/tech/core-data-merging-conflicts

0 голосов
/ 05 мая 2011

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

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

...