Ios 我可以使用iCloud同步NSUSERPLIST文件吗

Ios 我可以使用iCloud同步NSUSERPLIST文件吗,ios,cocoa-touch,ios5,sync,icloud,Ios,Cocoa Touch,Ios5,Sync,Icloud,我想知道是否可以使用iCloud在设备之间同步应用程序的首选项文件。我说的首选项文件是由NSUserDafults创建的com.domain.appname.plist文件,用于存储应用程序的首选项 我想让我的应用程序的首选项文件在两个不同的设备(例如iPad和iPhone)之间保持同步。这是否可以接受使用iCloud同步?或者我需要将plist文件转换为不同类型的文档,将其存储在云上,并在检索时将其转换回应用程序的首选项文件 谢谢 可以使用iCloud在设备之间同步首选项。但是,我建议不要在设

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

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


谢谢

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

该选项应该适合您尝试执行的操作。它与NSUserDefaults非常相似,因此应该很容易识别

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


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

有一个库可以使用一行代码来完成此操作

与类似,我在GitHub上还有一个名为的库。不是自动同步,而是使用一个新对象来代替保存到iCloud和
NSUserDefaults
NSUserDefaults
。这意味着您可以决定哪些元素存储在本地,哪些元素存储在云中


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

这听起来非常有用,我很高兴知道有一个iCloud类用于此。我的应用程序使用存储在plist中的网络摄像头URL和相关信息(名称、刷新率)的自定义列表。我想知道应用程序数据是否太多而无法以这种方式存储(限制为64KB)。对于更简单的设置,如当前选择的url等,这可能会更好,但对于存储应用程序数据,则不会更好。我已经有了一种方法,用户可以通过自定义URL方案通过电子邮件导入和导出数据,因此我正在尝试确定iCloud是否是实现这一点的最佳方法。无处不在的键值存储当然更适合较小的设置值。如果数据超过64kb,则必须使用基于文档的同步。我会将应用程序数据写入一个单独的plist文件,并将其移动到无处不在的iCloud容器中,在那里它将与其他设备同步。我想说的是,使用iCloud并使设备之间的数据同步对用户完全透明无疑是一种更好的体验。实际上,这几乎正是我所做的。我将该代码用作教程,然后编写了自己的实现,这要求用户指定他们希望与iCloud同步,而不是透明地进行同步。我之所以将此标记为正确答案,是因为MKiCloudSync代码帮助我了解了实现iCloud同步所需的操作。是否有快速实现?非常感谢添加此代码。起初,我在MKiCLoudSync中添加了一个if语句,但后来我没有使用它,而是出于自己的目的重新编写了它。我最终同步了所有内容,但只有当用户这么说时(不是在后台自动同步)。