iOS7 Core Data 和 iCloud 作为备份。用户的观点

Posted

技术标签:

【中文标题】iOS7 Core Data 和 iCloud 作为备份。用户的观点【英文标题】:iOS7 Core Data and iCloud as Backup. User's point of view 【发布时间】:2013-11-10 15:02:44 【问题描述】:

我正在使用 CoreData 的库类型应用程序。 此应用程序仅适用于 iPhone,我想将 iCloud 用作备份,以确保如果用户更换设备或删除并重新安装应用程序,他们可以获得原始数据。

使用新的 CoreData-iCloud 设置我发现配置非常简单。我刚刚在创建持久存储时添加了NSPersistentStoreUbiquitousContentNameKey,并且我从 iCloud 收听了三个基本通知。

现在我的问题是,当我删除我的应用程序并重新安装它时,在第一次启动重新安装的应用程序时,来自 iCloud 的数据需要超过 2/3 分钟才能返回到设备。

这不是用户所期望的......他们开始使用该应用程序并在某个时候找到了他们的旧数据。从用户的角度来看,这非常奇怪。是否有正确的方法来重新加载以前存储的数据,或者我必须让 iCloud 决定何时重新加载它们?在这种情况下,您如何管理这种情况,让用户知道这个随机更新时间?

【问题讨论】:

如果您想要的只是备份,那么只需将存储放在 /Documents 中,它将使用正常备份进行备份。使用 iCloud 会导致事务日志被放入 iCloud,并且在重新安装应用程序并假设 iCloud 可用后导入这些日志。 要以这种方式执行备份,用户必须执行设备同步。我认为使用 iCloud 可能是一个更加用户友好的过程。 如果用户启用了备份到 iCloud 而不是 iTunes,那么它应该是自动的,无需插入和同步。但备份到 iCloud 与 Core Data/iCloud 集成不同,后者旨在在设备之间同步数据。 【参考方案1】:

如果您想要的只是备份,那么只需将存储放在 /Documents 中,它将使用用户选择的正常备份方法进行备份。使用 Core Data/iCloud 集成旨在实现设备之间的数据同步,并将事务日志放入 iCloud。这些事务日志是在重新安装应用程序后导入的(假设 iCloud 可用)。

如果用户启用了备份到 iCloud 而不是 iTunes,那么备份应该是自动的,无需插入 iTunes 并与 iTunes 同步。

【讨论】:

当用户删除应用程序并重新安装时会发生什么?数据库将被删除,当用户安装应用程序后,它将从零开始重新编译。云中的数据库不会神奇地重新加载。我错了吗? 如果文件在 /Documents 目录中,它将被删除,并且在重新安装应用程序时需要创建一个新文档。备份不会神奇地恢复,用户必须选择从备份中恢复并恢复整个设备。

以上是关于iOS7 Core Data 和 iCloud 作为备份。用户的观点的主要内容,如果未能解决你的问题,请参考以下文章

iCloud Core Data 在 Xcode 6 / ios 8 SDK 中运行后不可用

在应用程序运行时启用/禁用 Core Data 的 iCloud 同步

iCloud Core Data iOS 6 到 iOS 7 最初是空的本地后备存储

iOS Core Data iCloud 同步 - 可选

iOS 7 中的 iCloud、Core Data 和来自 Web 服务的数据

在 iOS 7 中禁用 Core Data 中的 iCloud(也就是将持久存储文件迁移到本地)