合奏:何时使用 MagicalRecord 的 saveWithCompletion 与 saveAndWait

Ensembles: when to use MagicalRecord's saveWithCompletion vs saveAndWait

我有一个现有的应用程序(使用 MagicalRecord),我正在尝试合并 Ensembles。我在我的应用程序中遇到过几个使用 MR_saveToPersistentStoreWithCompletion 保存的地方。我在 Ensembles MagicalRecord 示例中注意到它使用 MR_saveToPersistentStoreAndWait.

我知道这两者有什么区别;问题是:对于 Ensembles,我应该 always 使用 MR_saveToPersistentStoreAndWait 吗?如果不是,什么情况下我应该使用MR_saveToPersistentStoreWithCompletion

要注意的主要事情是使用完成块涉及在后台异步保存,一旦保存完成,Ensembles 必须从触发的通知中捕获更改。

一般来说,这不是问题,但是当终止或进入后台时,重要的是让 Ensembles 有机会完成保存它在通知中观察到的内容。因此,在这种情况下,您应该使用保存并等待的变体,以确保在对整体使用 processPendingChanges... 方法之前存储已完全保存。如果您改为使用非阻塞方法,当您要求 Ensembles 处理未决更改时,您无法确定保存已完成,因此存在在应用程序终止之前无法完成的风险。

后台保存有一个更奇特的复杂性,涉及在不同设备上创建具有相同全局标识符的对象,但它只会影响少数应用程序。您可以在 Ensembles book.

中阅读有关该案例的更多信息