【问题标题】:Core Data Sync With Multiple Users与多个用户同步核心数据
【发布时间】:2015-03-08 02:44:46
【问题描述】:

我想将核心数据应用程序与具有不同 iCloud ID 的用户同步,我正在尝试找出最优雅的方式来做到这一点。我不希望数据与所有用户同步,但希望能够在家庭成员之间同步。根据我所做的研究,我认为我不能使用 iCloud Core Data 同步来做到这一点,因为它只在具有相同 iCloud ID 的设备之间同步。我查看了this stackoverflow answer 并阅读了一些关于 Ensembles、Parcelkit 和 TICoreDataSync、Parse 等的信息,但我不清楚这些选项中的任何一个是否允许我与多个用户同步。有没有人有一个与多个用户同步 Core Data 应用程序的好方法?

【问题讨论】:

    标签: ios core-data


    【解决方案1】:

    如果您希望您的应用吸引更多用户,您需要考虑其他设备类型(至少是 Android)。

    我现在通过以下方式做同样的事情:

    1. 使用适当的 Web 服务设置在线数据库(注意安全问题的实施 - 数据库不应被 Web 服务以外的任何东西暴露)。
    2. 为您与服务器的通信创建一个类(使用具有安全处理(如身份验证和授权)的 Class 方法)。
    3. 使用应用中的类与服务器通信(SQL 操作在服务器上完成)。

    要与 CoreData 集成,您需要在应用中创建类似于后端数据库结构的模型。然后,您需要为仅处理本地 CoreData 的应用创建一个类似的类。

    如果您想确保在服务器和本地数据存储上完成操作,可能需要更高级别的类。

    此外,您必须实现许多条件以确保仅在确保数据在线存储之后才将数据写入本地(或创建用于稍后运行的不同操作的引擎)。

    另一种方式如果您熟悉通知: 在设备之间使用结构化通知进行数据操作,以使所有内容与其他用户保持同步。问题在于操作的“自主性”。如果两个操作几乎在同一时间完成,您必须找到一种方法来确保操作的顺序正确完成(可能是时间戳或其他东西)。

    【讨论】:

      【解决方案2】:

      我正在为我的应用程序研究同样的事情,我“认为”在使用云工具包中的公用文件夹后,你可以做一个相当不安全的版本,如本问题所述(当时没有接受的答案发布):Private data sharing using CloudKit

      您需要找到一种方法来区分真正公开的数据和您需要的用户之间共享的数据以及某种级别的身份验证。

      我将尝试将包含访问权限的权限文件导出给我想要与之共享的任何人,并结合位于该权限文件中的唯一标识符。

      请记住,正如链接答案的 cmets 中所提到的,我的实现将是隐蔽的安全性(感谢该短语),除非您找到一种为其添加适当验证的方法,但我的数据相对不敏感。

      希望这一点,或者 cmets 中的任何嘲笑,都能为您指明正确的方向:)

      【讨论】:

        【解决方案3】:

        Ensembles 和 TiCoreDataSync可能工作。他们可以使用 Dropbox 文件同步,因此原则上他们应该使用 Dropbox 共享文件夹。我不认为这些是主要的预期用途,所以我建议在假设这真的可行之前联系开发人员和/或自己做一些好的测试。

        不过,您需要考虑用户体验。至少,您的用户都需要 Dropbox 帐户,并且必须在开始以这种方式同步数据之前设置一个共享文件夹。

        Parcelkit 可能无法正常工作。它使用 Dropbox 的数据存储 API,与其他 Dropbox 服务不同,它似乎不支持共享数据。

        存在确实支持这种共享的服务——例如,ParseFirebase——但请务必在使用前仔细查看其定价。当然,也有许多项目拥有自己的自定义服务器后端,但这显然需要团队中有人可以完成此类工作。

        【讨论】:

        • 感谢您提供的信息,我可能会进一步检查所有这些选项。对于 Parse,我已经进行了一些调查,看起来我在那里做的任何事情都需要我添加额外的代码和开销,以使用 Parse 字段名称等将数据上传到 Parse。您是否知道 Parse 的任何其他选项更多自动管理 Parse 端的核心数据实体?
        • 对,Parse 是一个通用的后端,但是让它与 Core Data 一起工作取决于你。有一个开源框架叫FTASync,但我没试过。
        • 谢谢,我会检查所有这些。
        • 我正在考虑开发自己的库来解决这个问题。见stackoverflow.com/questions/31283529/core-data-sync-via-parse。我很想得到关于我的方法的反馈。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-10-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多