在 macOS Cocoa 基于文档的应用程序中,对于 "New From Template" 功能(例如在 Logic 中),什么是好的实施策略?

In a macOS Cocoa Document-Based Application what could be a good implementation strategy for a "New From Template" feature like for example in Logic?

在此先感谢您的帮助。我在 macOS 应用程序方面有很好的经验,但在基于文档的应用程序方面我几乎是新手。我正在尝试一个基于文档并使用 CoreData 的新项目。我想实现一个 "New Document From Template" 以便在选择某个模板时,应用程序创建一个新文档,其中包含在文档的托管对象上下文中创建和填充的一些核心数据对象。实现这一目标的干净方法是什么?非常感谢你的帮助。

看看NSDocumentController's duplicateDocument(withContentsOf:copying:displayName:) method:

Creates a new document by reading the contents for the document from another URL, presents its user interface, and returns the document if successful.

你会想这样称呼它:

let document = try NSDocumentController.shared.duplicateDocument(
    withContentsOf: templateUrl,
    copying: true,
    displayName: "Untitled")