用于保存的 NSManagedObjectContext 进度表?

Posted

技术标签:

【中文标题】用于保存的 NSManagedObjectContext 进度表?【英文标题】:NSManagedObjectContext progress meter for saving? 【发布时间】:2013-01-31 22:24:30 【问题描述】:

有没有办法将 NSManagedObjectContext 设置为定期向委托发送消息,因为它执行复杂的操作,例如删除具有许多级联删除的对象,或将更改保存到磁盘?我会将进度更新发送到 MBProgressHUD 控制器。

【问题讨论】:

如果您的 MOC 正在执行阻塞主线程的冗长操作,您应该考虑将这些操作移到单独的上下文/线程中。 【参考方案1】:

总有办法。有没有简单的方法?没有。

上下文本身不会保存到磁盘。 Apple 强烈反对继承 NSManagedObjectContext。 NSPersistentStore 是实际的序列化/反序列化。您需要创建自己的 NSPersistentStore ,它在保存时将具有可观察的进度属性或委托。

【讨论】:

ios 上?不,它很少有很好的用途。在后台运行该操作就足够了,但可能会显示一个不确定的进度指示器。像 NSMigrationManager 这样真正长时间运行的操作确实会公开一个可观察的进度属性。

以上是关于用于保存的 NSManagedObjectContext 进度表?的主要内容,如果未能解决你的问题,请参考以下文章

NSFetchedResultsController、NSManagedObjectContextDidSaveNotification 和 MagicalRecord 的舞蹈

跳过核心数据迁移

IOS CoreData,使用哪个 NSManagedObjectContextConcurrencyType,为啥?

最佳实践 - iOS 中的 NSManagedObjectContextObjectsDidChangeNotification

从另一个 NSManagedObjectContext 获取 NSManagedObject(引用相同的 NSPersistentStoreCoordinator)

开始交易仅用于保存