Platforms Documentation Matrix

包含的文档 (ContainedDocument)

包含的文档允许您将 NSDocument 实例嵌套在抽象容器中。 这些容器可以是您需要的任何东西,包括其他的 NSDocument 实例。 这实际上是一件非常棘手的事情,需要仔细管理 NSDocumentController 才能实现。

支持 NSDocument 的全部操作和交互是具有挑战性的。 我能够实现其中的许多操作,但协调仍然需要子类化 NSDocumentNSDocumentController

集成

dependencies: [
    .package(url: "https://github.com/ChimeHQ/ContainedDocument", from: "1.0.0")
]

ContainedDocumentController

一个 NSDocumentController 子类,用于管理 NSDocument 的生命周期以及与容器的关系。 要使用它,您必须重写三个容器-文档关联方法。 支持可恢复状态,但它是可选的。

open func associateDocument(_ document: NSDocument, to container: Container)
open func disassociateDocument(_ document: NSDocument)
open func documentContainer(for document: NSDocument) -> Container?

open func encodeRestorableState(with coder: NSCoder, for document: NSDocument)
open func restoreState(with coder: NSCoder, for document: NSDocument)
// ...

此外,不要忘记 NSDocumentController 对于您的 AppKit 进程是全局的。 您必须尽快实例化您的子类,以确保它正在被使用。

包含的文档 (ContainedDocument)

这是一个 NSDocument 子类,可以支持文档复制和窗口恢复。

贡献和协作

我很乐意收到您的来信! 问题或拉取请求都很棒。 也可以使用 Matrix space 获取实时帮助,但我强烈倾向于以文档的形式回答。

我更喜欢协作,如果您有类似的项目,我很乐意找到合作方式。

我更喜欢使用制表符进行缩进,以提高可访问性。 但是,我宁愿您使用您想要的系统并提出 PR,而不是因为空格而犹豫。

通过参与此项目,您同意遵守贡献者行为准则