Рассмотрим этот псевдокод:
func testSome() {
let context1 = inMemoryStore.newBackgroundContext()
context1.performAndWait {
// Inserting entity...
// Ok, it is saved and it is present in the viewcontext of inMemoryStore, this is what I would expect.
try! context1.save()
// Create a new background context, where the newly created object will be in
let context2 = inMemoryStore.newBackgroundContext()
context2.performAndWait {
let title = "title"
let objectWithTitle = // retrieve method
// The titles didn't match in this test case
guard objectWithTitle.title != title else { return }
conversation.title = title
// Saving back, I don't expect it to save on context1 also because I didn't set https://developer.apple.com/documentation/coredata/nsmanagedobjectcontext/1845237-automaticallymergeschangesfrompa to true
try! context2.save()
context1.performAndWait {
let objectWithTitle2 = // retrieve method
// It passes!! How?!
XCTAssertEqual(title, objectWithTitle2.title)
}
}
}
}
Я получил в хранилище памяти 2 фоновых контекста, ни одному из них не присвоено automaticallyMergesChangesFromParent
значение true, поэтому я не ожидаю, что они автоматически узнают каждыйдругие сохраняют, но они делают. Как? automaticallyMergesChangesFromParent
является чем-то устаревшим, потому что я видел это в iOS 10 <код? Все ли фоновые контексты знают, что друг друга спасает? </p>