【问题标题】:Can I use iCloud to sync the NSUserDefaults plist file我可以使用 iCloud 同步 NSUserDefaults plist 文件吗
【发布时间】:2011-12-10 05:50:09
【问题描述】:

我想知道是否可以使用 iCloud 在设备之间同步应用程序的首选项文件。我所说的首选项文件是 NSUserDafults 创建的 com.domain.appname.plist 文件,用于存储应用程序的首选项。

我希望可以选择让我的应用的首选项文件在两个不同的设备(例如 iPad 和 iPhone)之间保持同步。这是可以接受的 iCloud 同步使用吗?或者我是否需要将 plist 文件转换为不同类型的文档,将其存储在云中,并在检索时将其转换回应用程序的首选项文件?

谢谢!

【问题讨论】:

    标签: ios cocoa-touch ios5 sync icloud


    【解决方案1】:

    类似于MKiCloudSync,我在 GitHub 上也有一个名为SDCloudDefaults 的库。您可以使用一个新对象而不是自动同步,而不是 NSUserDefaults,它同时保存到 iCloud 和 NSUserDefaults。这意味着您可以决定哪些元素存储在本地,哪些元素存储在云端。

    (我在实现 MKiCloudSync 之后发现了它。我认为它很聪明,但我不想将所有内容同步到 iCloud,所以我的解决方案对我来说仍然更有效。)

    【讨论】:

    • 很酷感谢您添加。起初我在 MKiCLoudSync 中添加了一条 if 语句,但后来我没有使用它,而是出于自己的目的重新编写了它。我最终同步了所有内容,但只有当用户这么说时(不是在后台自动)。
    【解决方案2】:

    有一个库可以用一行代码做到这一点

    https://github.com/MugunthKumar/MKiCloudSync

    【讨论】:

    • 这实际上几乎就是我所做的。我将该代码用作教程,然后我最终编写了自己的实现,这要求用户指定他们想要与 iCloud 同步,而不是透明地发生。不过,我将此标记为正确答案,因为 MKiCloudSync 代码帮助我了解了实现 iCloud 同步需要做什么。
    • 有快速实施吗?
    【解决方案3】:

    可以使用 iCloud 在设备之间同步首选项。但是,我建议不要在设备之间共享 plist 文件。

    NSUbiquitousKeyValueStore 应该适合您尝试做的事情。和NSUserDefaults很像,应该很容易上手。

    要使用它,只需在您的权利文件中启用 com.apple.developer.ubiquity-kvstore-identifier 权利,然后复制您希望在无处不在的键值存储中同步的首选项。一旦它在无处不在的 kvstore 中,您就可以从其他设备上的应用程序中看到它。您甚至可以在不同的应用程序之间进行同步,只要它们使用相同的标识符即可。

    您还应该注册 NSUbiquitousKeyValueStoreDidChangeExternallyNotification 通知以观察新更改并相应地更新设备上的 standardUserDefaults。

    【讨论】:

    • 这听起来很有用,我很高兴知道有一个 iCloud 类可以做到这一点。我的应用程序使用存储在 plist 中的网络摄像头 URL 和相关信息(名称、刷新率)的自定义列表。我想知道以这种方式存储应用程序数据是否太多(限制为 64 kb)。这对于更简单的设置(例如当前选择的 url 等)可能更好,但不适用于存储应用程序数据。我已经为用户提供了一种使用自定义 URL 方案通过电子邮件导入和导出数据的方法,因此我正在尝试确定 iCloud 是否是最好的方法。
    • 无处不在的键值存储当然更适合较小的设置值。如果您的数据可能超过 64kb,则必须改用基于文档的同步。我会将应用程序数据写入一个单独的 plist 文件,然后将其移动到无处不在的 iCloud 容器中,然后将其同步到其他设备。我想说的是,使用 iCloud 并让设备之间的数据同步对用户完全透明绝对是一种更好的体验。
    • 这是一个很好的答案,只要你不想同步到 watchOS
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-27
    • 2011-09-29
    • 2012-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多