5

我想将一些附加信息与文档一起存储,但我不能使用捆绑包或包,也不能将其存储在文档本身中。

该应用程序是一个文本编辑器,我希望它将代码折叠和书签位置与文档一起存储,但显然这不能直接嵌入到代码中,我不想用难看的注释来更改代码。

我可以使用 NSDocument 将信息存储在文档的资源分支中吗?如果是这样,我该怎么做?我应该直接写信<filename>/..namedfork/rsrc还是有可用的 API?

4

3 回答 3

9

首先,不要使用资源分叉。它实际上已被弃用。相反,使用扩展属性。它们可以通过setxattr和以编程方式在 BSD 级别设置getxattr。很多地方都使用了扩展属性……例如,在最新的 OS X 中,资源分叉本身就是作为一种特殊类型的扩展属性来实现的。

例如,Cocoa 文本系统自动将扩展属性添加到文件中以指定编码。

从 Snow Leopard 开始,我就考虑NSFileManagerNSFileWrapper支持扩展属性,但我找不到任何文档:p 不过,您始终可以使用 BSD 级别的函数。

于 2011-08-09T15:42:40.947 回答
1

如果将文件复制到另一台计算机,状态是否需要随文件一起移动?如果没有,您可能会比模仿 Bare Bones 使用 BBEdit 处理文档状态的方式更糟糕。它们将所有文档的状态存储在 ~/Library/Preferences/com.barebones.bbedit.PreferenceData/Document State.plist 中。

资源分支文档在这里。但它包含大量不使用资源分叉的建议。

于 2011-08-09T15:48:39.957 回答
0

我的网站上有一个用于阅读和编写资源分叉的课程,但我一直没有时间转移到我的 GitHub 存储库,因为正如 Yuji 指出的那样,它们不再真正被使用了。

我要说别名文件和网络 Internet 位置文件是唯一使用它们的地方,但我在Mac OS X v10.7 (Lion) 上使用和测试过,它们甚至不再在那里使用;它们仍可用于自定义图标。我没有专门对此进行测试。我将不得不看看这如何影响我在 10.7 上的 NDAlias 课程。

ndresourcefork

于 2011-08-09T17:57:56.833 回答