0

У меня два NSManagedObjectContext «с, один используется для записи данных из ответа АФИ в фоновом режиме, а другой для заполнения NSFetchedResultsController следующим образом:Как слить несохраненные NSManagedObjectContext из одного контекста в другой?

// moc used to fetch objects via NSFetchedResultsController: 

    moc = NSManagedObjectContext(concurrencyType: .MainQueueConcurrencyType) 
      moc.mergePolicy = NSMergeByPropertyStoreTrumpMergePolicy 


// moc used when writing data from an api response: 

    backgroundMoc = NSManagedObjectContext(concurrencyType: .PrivateQueueConcurrencyType) 
      moc.mergePolicy = NSMergeByPropertyStoreTrumpMergePolicy 

Есть объекты, которые временно хранятся в background moc (без вызова .save()), и мне нужно объединить эти изменения в основной мок, чтобы мой NSFetchedResultsController имел к нему доступ.

Я попытался подписавшись на NSManagedObjectContextDidSaveNotification, но это только получает удар, если я называю backgroundMoc.save(), что я пытаюсь избежать, так как объекты в моих backgroundMoc несохраненные изменения.

Каков наилучший способ для этого?

ответ

0

Для этого нет встроенного механизма. Когда у вас есть несохраненные изменения в одном контексте, эти изменения существуют только в этом контексте. Другие контексты не могут их видеть, поэтому они не могут получить содержащуюся в них информацию. Если вы не хотите сохранять изменения, ваш единственный вариант - повторить те же изменения в другом контексте. То есть, что бы вы ни делали в контексте A, повторите это в контексте B, чтобы он имел те же самые изменения.

 Смежные вопросы

  • Нет связанных вопросов^_^