【问题标题】:iCloud Core Data Load of initial data for 2nd deviceiCloud Core 数据加载第二台设备的初始数据
【发布时间】:2014-11-11 19:25:19
【问题描述】:

根据 Apple 的最新文档,我的应用程序使用 Core Data 和 iCloud,并且运行良好。我不管理/不理解的是:

安装应用程序后,将设置数据库并填充一些初始数据。这适用于第一个设备。

一旦在 Core Data 中设置了数据库并且应用程序将安装在第二台设备(相同的 iCloud 帐户)上,我需要避免再次加载初始数据。所以我的想法是,我怎样才能确定数据库是否已经在 iCloud 中可用?

我搜索了很多,发现了很多讨论,但至少没有一个适合 iOS 7 和 8 的解决方案(除了以后删除我不想要的重复记录的可能性之外)。

请让我知道您的想法,非常感谢任何建议(或我没有找到的链接)!

【问题讨论】:

    标签: ios core-data icloud


    【解决方案1】:

    您不能只设置一个布尔值来检查初始数据,因为布尔值也需要同步,您可能无法及时获取。您也无法检查初始数据,因为它还需要同步并且可能无法及时到达。

    但有几种可能性。

    • 将初始数据放在未同步的单独持久存储文件中。您可以拥有多个存储文件,并且可以将它们全部添加到持久存储协调器中。将初始数据放在一个未同步的存储文件中,并将所有其他数据放在一个单独的同步文件中。由于初始数据不会同步,因此不会有任何重复。您不能建立从一个商店文件到另一个商店文件的关系,但您可以使用获取的属性来获得类似的东西。

    • 继续将所有数据放在同一个文件中,但过滤掉重复项。一切都在一个地方,重复是不可避免的,但你可以处理这个问题。您最终要等到重复出现,找到它们并删除它们。需要这样做有点烦人,但如果您将所有内容放在同一个持久存储中,这确实是唯一的方法。我不久前在a blog post at my site 中描述了这个过程,其中详细介绍了如何有效地做到这一点。

    【讨论】:

    • 感谢您的建议,不幸的是,两者都不适合我,因为用户很早就会更改初始数据。所以,如果我重新加载它,我会打扰他,因为他可能不得不再次更改/删除它。
    • 那么您需要重新考虑您的应用程序的设计。使用您当前的方案,您无法避免重复。您能做的最好的事情就是检测它们并尝试以某种方式处理它们。阻止它们根本不是一种选择。
    • 好吧,太糟糕了,不敢相信这么简单的事情是不可能的。无论如何,感谢您的时间和建议。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-08
    • 2015-12-04
    • 2014-09-19
    • 1970-01-01
    • 2016-10-28
    相关资源
    最近更新 更多