Как указать политику слияния в magicalrecord

Вероятно, это относится к CoreData по умолчанию, но поскольку я использую MagicallRecord, я собираюсь задать вопрос в этом контексте.

У меня есть пара разных мест, где можно сохранить объект. В частности, объект находится в одном месте, а его дочерние элементы - в другом.

Объект:

[MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext) {
   NSLog(@"saving objects");
   NSArray *objects = // fetch objects with localContext

   // change some data on objects
}];

Дети:

[MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext) {
   NSLog(@"saving some children");
   NSArray *children = // fetch objects with localContext

   // change some data on children
}];

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

Как правильно указать политику слияния при использовании MagicalRecord? Я просто устанавливаю его для каждого localContext?

localContext.mergePolicy = // Whatever merge policy I want

Или мне следует настроить политику слияния, которая будет использоваться в моем приложении? IE на данный момент моя политика слияния всегда будет одинаковой. Я знаю, что это может измениться, поэтому я уверен, что правильный ответ - установить политику слияния для каждого и каждого localContext.

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


person lostintranslation    schedule 16.12.2014    source источник


Ответы (1)


Вы хотите установить политику слияния в контексте, в котором сливаются ваши изменения. Если вы используете контексты по умолчанию, эти политики слияния должны быть установлены за вас. Это также зависит от того, как вы создаете контексты. Если они не связаны отношениями родитель / потомок, вам придется вручную настроить обработку наблюдения, чтобы объединить эти изменения из одного контекста в другой. У MR есть помощник или два, чтобы облегчить эту работу.

person casademora    schedule 16.12.2014
comment
Они связаны (я думаю) просто по умолчанию с тем, как я использую MR. Я никогда не устанавливал политику слияния в контексте по умолчанию. Что установлено автоматически? Какой помощник его установить? Если я использую фоновое сохранение, которое дает мне localContext, объединяется ли этот локальный контекст обратно в контекст по умолчанию? - person lostintranslation; 17.12.2014