以下のようなコードがメインスレッドで実行されるのを期待している場合、2.2以前までは、データベースに保存されるが、2.3.0以降では保存されない。

let td = Todo.MR_createEntity()
td.title = titleText.text
td.managedObjectContext?. MR_saveOnlySelfAndWait()

MR_createEntity でdefaultContextにEntityが生成され、MR_saveOnlySelfAndWaitではdefaultContextに保存される。defaultContextに変更があった時点で、データベースに保存されることを期待している。しかし、2.3.0以降では、 MR_rootSavingContextができたため、defaultContextで保存処理が行われてもデータベースには反映されない。

解決策として、アプリ終了時にdefaultContextから MR_rootSavingContextに保存するか、保存のたびに MR_saveToPersistentStoreAndWait又は類似のメソッドを実行する必要がある

Post Navigation