iCloud 中的 NSDictionary(存储视图控制器)

Posted

技术标签:

【中文标题】iCloud 中的 NSDictionary(存储视图控制器)【英文标题】:NSDictionary (storing view controllers) in iCloud 【发布时间】:2012-11-24 02:29:37 【问题描述】:

我的视图控制器有很多布尔值、字符串和整数,它们用 NSCoding 保存,然后几个类保存了更多相同类型的信息。我通过将视图控制器放在 NSMutableDictionary 中并使用 NSKeyedArchive 保存它来将它们联系在一起。

NSMutableDictionary *rootObject;
rootObject = [NSMutableDictionary dictionary];
[rootObject setValue:self.controllers forKey:@"controllers"];
[NSKeyedArchiver archiveRootObject:rootObject toFile:path];

使用 NSKeyedUnarchiver 来设置视图控制器会带回所有的 NSCoded 数据,并且效果很好。

我正在考虑实现 iCloud,但对实现它的最佳方式感到困惑。如果我将 NSMutableDictionary 存储在专门用于保存的 UIDocument 类中然后加载它,它会携带 NSCoded 值吗?

【问题讨论】:

【参考方案1】:

归档只是意味着将某些东西变成一个 NSData 对象。一个 NSData 对象是一个 NSData 对象。它不会因为存储在云中而神秘地失去其完整性。如果它在从您保存它的任何位置(例如用户默认值、磁盘上的文件等)取消归档时工作,那么当您从云中取消归档时它也将工作。

您可能不需要 UIDocument 的开销。请记住,iCloud 可以有效地让您在云中保留相当于 NSUserDefaults 类型的数据(“键值存储”) - 它不计入用户的 5MB 限制。

【讨论】:

以上是关于iCloud 中的 NSDictionary(存储视图控制器)的主要内容,如果未能解决你的问题,请参考以下文章

iCloud 键值存储未出现在 iCloud iPhone 设置中的管理存储中

iCloud:如何存储不在文档中的数据?

iCloud 文档存储中的通知

iPhone中的iCloud实现应用程序? [关闭]

无法从 iCloud 迁移永久存储

如何获取存储在 iCloud 中的图像路径?