我可以使用iCloud同步NSUserDefaults plist文件

Jac*_*son 14 cocoa-touch sync ios ios5 icloud

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

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

谢谢!

Ste*_*ton 16

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

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


pal*_*aja 13

有一个库可以使用一行代码执行此操作

https://github.com/MugunthKumar/MKiCloudSync


kev*_*nyc 11

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

NSUbiquitousKeyValueStore应该是适合你想做什么.它与NSUserDefaults非常相似,因此应该很容易上手.

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

您还应注册NSUbiquitousKeyValueStoreDidChangeExternallyNotification通知以监视新更改并相应地更新设备上的standardUserDefaults.

  • 无处不在的键值存储肯定更适合较小的设置值.如果您的数据超过64kb,则必须使用基于文档的同步.我会将应用程序数据写入单独的plist文件并将其移动到无处不在的iCloud容器中,在那里它将同步到其他设备.我会说使用iCloud并使设备之间的数据同步对用户完全透明绝对是一种更好的体验. (2认同)