我有一个应用程序,我想添加iCloud支持。此应用程序从服务器加载数据,数据存储在CoreData中,以便NSFetchedResultsController
可以管理UITableView
。
当应用程序终止时,几乎所有存储的数据都会被删除,因为数据对时间非常敏感,而且存储它是没有意义的。但是,CoreData中有一些项目已保存,例如某些项目的顺序和用户选择的收藏夹。
在iCloud中使用Core Data来跨设备同步这几个保存的项目是否有意义?我担心的是,一旦所有表视图都填充了临时数据,那么设备将使用带宽同步这些信息。
答案 0 :(得分:3)
是的,它会同步商店中的所有数据。 但故事的内容远不止于此。
当您将持久性存储添加到持久性存储协调器时,通过在调用addPersistentStoreWithType:configuration:URL:options:error:
时使用正确的选项值,可以告诉Core Data使用iCloud。如果你告诉Core Data在这里使用iCloud,那么该持久存储中的所有数据都将被同步。
但是,您可以使用不同的持久性存储文件多次调用此方法。它被称为持久性存储协调器,因为它可以在多个持久性存储之间进行协调。大多数应用只使用一个,但您可以根据需要使用多个。
根据您的应用的工作方式,有几种不同的方法可以解决这个问题。
assignObject:toPersistentStore:
来执行此操作。如果不同步的数据非常短暂,请在设置非同步持久性存储时考虑使用NSInMemoryStoreType
。这使用了更多的内存,但它也使您无需删除商店内容。当应用程序存在时,内存存储就会消失。如果你可以节省内存,这可以更方便使用。它们的工作方式基本相同(例如,您仍然可以使用NSFetchedResultsController
),但它们永远不会保存到文件中。