如何将我的 NSUserDefaults .plist 同步到 iCloud?

Posted

技术标签:

【中文标题】如何将我的 NSUserDefaults .plist 同步到 iCloud?【英文标题】:How do I sync my NSUserDefaults .plist to iCloud? 【发布时间】:2014-05-12 03:12:39 【问题描述】:

我需要将我的程序的 .plist 同步到 iCloud,以更新 tableView 并存储在云中。我该怎么做呢?我一直在看的所有教程似乎都已过时或令人困惑。有什么简单的方法可以解决这个问题吗?

【问题讨论】:

什么令人困惑?你试过什么代码? 尝试了 MKiCloudSync,但这似乎已经过时了。除了在程序的功能部分启用 iCloud 之外,我真的不知道从哪里开始。 "...我的程序的核心数据 .plist..."ios 开发的上下文中不是一个有意义的短语。您是否尝试同步 plist、Core Data 或两者,或者其他什么? Can I use iCloud to sync the NSUserDefaults plist file的可能重复 我正在尝试同步我的 nsuserdefaults 毛绒。迦勒那个似乎已经过时了 【参考方案1】:

来自Apple iCloud Design Guide,

iCloud 支持三种存储方式。选择正确的一个(或 组合)为您的应用程序,确保您了解意图和 每个人的能力。三种 iCloud 存储是:

键值存储用于离散值,例如偏好、设置和简单的应用状态。 文档存储,用于存储用户可见的基于文件的信息,例如文字处理文档、绘图和复杂的应用状态。 核心数据存储,适用于鞋盒式应用和基于服务器的多设备数据库解决方案,适用于结构化内容。 iCloud Core Data 存储建立在文档存储之上,并使用相同的 iCloud API。

因此,您不会将 NSUserDefaults (plist) 同步到 iCloud;您将开始使用 NSUbiquitousKeyValueStore 对象。

来自Designing for Key-Value Data in iCloud:

就像你使用 NSUserDefaults 对象一样,使用 iCloud 键值对 存储以保存和检索标量值(例如 BOOL)和 属性列表对象类型:NSNumber、NSString、NSDate、NSData、 NSArray 和 NSDictionary。数组和字典值可以包含任何 这些值类型。

NSUbiquitousKeyValueStore 类提供读取和 编写这些类型中的每一个,如 NSUbiquitousKeyValueStore 中所述 类参考。

【讨论】:

嘿@Black Frog,是否可以将 .plist 文件作为文档存储在 iCloud 中?键值存储有其局限性,Apple 已经提供了可以使用的 Plist 解码器。 Apple 自己的文档确实说 iCloud 文档存储是为复杂的应用程序状态而设计的,这正是我需要的解决方案。

以上是关于如何将我的 NSUserDefaults .plist 同步到 iCloud?的主要内容,如果未能解决你的问题,请参考以下文章

存储 NSUserDefaults (Xcode) 时避免重复

如何以编程方式切换uiswitch按钮

如何把ply点云导入到UE中 ply点云导入UE4

如何获取这个PLY里的模型

如何在我的应用加载之前从 NSUserDefaults 检索值...?

如何使用 NSUserdefaults 为每个启动的对象创建一个密钥