每个文档的NSUserDefaults

时间:2012-11-15 14:11:59

标签: macos cocoa nsuserdefaults appkit nsdocument

AppKit框架是否提供了按NSUserDefaults存储NSDocument的方法?如果没有,你会如何推荐实现这个?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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


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

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

请参阅documentation for NSURL,具体为+bookmarkDataWithContentsOfURL:error:+URLByResolvingBookmarkData:options:relativeToURL:bookmarkDataIsStale:error:。有更多的方法,但这些是你想要使用的方法。

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

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