包含的文档允许您将 NSDocument
实例嵌套在抽象容器中。 这些容器可以是您需要的任何东西,包括其他的 NSDocument
实例。 这实际上是一件非常棘手的事情,需要仔细管理 NSDocumentController
才能实现。
支持 NSDocument
的全部操作和交互是具有挑战性的。 我能够实现其中的许多操作,但协调仍然需要子类化 NSDocument
和 NSDocumentController
。
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,而不是因为空格而犹豫。
通过参与此项目,您同意遵守贡献者行为准则。