0

AppKit 框架是否提供了一种存储NSUserDefaults方式NSDocument?如果没有,你会建议如何实施?

4

2 回答 2

0

如果您有一些标识文档的键,则可以使用该键将对象(字典...)存储在NSUserDefaults. 或者,根据您定义“文档”的方式,它可以包含自己的元数据。

于 2012-11-15T14:16:12.800 回答
0

使用NSDictionary. 将其内容与文档一起存储。如果您保存的格式无法修改以包含此字典,您可能可以切换到“文档包”,也称为“文档包” - 包含数据和 plist 内容的目录词典。


如果您想明确地将每个文档的数据存储在[NSUserDefaults standardUserDefaults]-provided 工具中,您可能需要考虑组织这样的事情:

  • documentSpecificSettings - NSArray
    • 项目 0 - NSDictionary
      • url - 包含 NSURL 书签的 NSData
      • some_key - 您的自定义密钥
      • another_key - 您的自定义密钥
    • 项目 1 - NSDictionary
      • url - 包含 NSURL 书签的 NSData
      • some_key - 您的自定义密钥

请参阅文档NSURL,特别是+bookmarkDataWithContentsOfURL:error:+URLByResolvingBookmarkData:options:relativeToURL:bookmarkDataIsStale:error:。周围还有更多方法,但这些是您想要使用的方法。

据我了解,在将书签解析为 URL 时,您必须手动跟踪文档是否仍然存在。而且我怀疑您必须解析字典中的每个 URL 以查看它是否适用于您的文档。

这似乎比简单地将字典与文档一起存储更复杂。

于 2012-12-19T15:30:19.397 回答