【问题标题】:NSCoder + UIDocument: are they compatible?NSCoder + UIDocument:它们兼容吗?
【发布时间】:2012-03-30 20:06:22
【问题描述】:

这可能是一个幼稚的问题 - 但我想仔细检查一下,以免在 UIDocument 没有达到我想要的效果时浪费时间。

背景:我有一个应用程序,我为它创建了一个简单的文件系统,以将用户创建的文档保存为plists。我的编码/解码工作正常。我正在使用一些原始类型并使用适当的编码器方法进行处理。我有一个命名系统并将 plist 保存到 Library 目录中的自定义目录中,因为这些是用户不应该直接访问的文档。 (如果他们愿意,他们可以将数据导出到文档目录。

我开始考虑“自动保存”,然后发现 UIDocument - 看起来很棒。

鉴于上述情况,我是否可以使用UIDocument?我保存的是从 NSObject 派生的自定义类“项目”实例。它包含一堆 NSMutable 数组,其中包含自定义类、NSDictionaries 等的实例。我现在正在阅读这个 UIDocument 教程:http://www.raywenderlich.com/6015/beginning-icloud-in-ios-5-tutorial-part-1 但不想发现由于我的数据等原因它无法工作。

更新:(对于那些在家阅读的人... ;-) 在这方面取得了一些进展。 UIDocument 使用 NSKeyedArchiver 而不是 NSCoder (错误 - 请参阅下面的答案) 但编码方法名称相同,因此很容易调整我已有的内容。 已经能够保存一个看起来正在捕获所有数据的 plist - 但直到我尝试将其全部读回时我才会知道。遇到一个我尚未解决的错误:

NSFileCoordinator:发出了一个令人惊讶的服务器错误信号。详细信息:连接无效

并不奇怪,因为我在本地保存并不清楚它为什么要尝试连接到 iCloud。希望我能把它关掉。

【问题讨论】:

    标签: ios nscoding uidocument


    【解决方案1】:

    我不确定您从哪里获得有关使用 NSKeyedArchiver 的 UIDocument 的信息。对于一个简单的实现,您需要做的就是提供文档内容的 NSData 表示——无论您是使用 NSCoder、NSKeyedArchiver、NSPropertyListSerialization 还是某些自定义方案从模型对象生成该数据都没有关系。

    鉴于此,我认为它不应该与您描述的数据模型一起使用。

    【讨论】:

    • 在此处关注代码:stackoverflow.com/questions/8479198/… - 没有找到许多其他使用 UIDocument 复杂数据的示例
    • 关键是所有 UIDocument 关心的是获取一个 NSData ——它不关心数据中的内容或它是如何到达那里的。您之前使用 NSCoder 制作了 NSData,因此您可以在 UIDocument 中使用相同的数据。 (并不意味着您不会看到 UIDocument 的其他问题,但至少它们与您的模型设计无关。发布一些详细信息/代码,我们可以帮助诊断。)
    • 酷 - 感谢您的澄清。我现在可以粗略地工作了。现在的问题更多@我没有考虑到“文档”模型来设计我的课程 - 所以我有一些修改要做。关于 `NSFileCoordinator 的任何想法:一个令人惊讶的服务器错误已发出信号。详细信息:连接无效`错误?
    • 对不起,以前没见过。也许将其作为一个新问题发布?
    猜你喜欢
    • 1970-01-01
    • 2018-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-27
    • 1970-01-01
    • 2013-10-23
    相关资源
    最近更新 更多