Contents

duplicateDocument(withContentsOf:copying:displayName:)

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

Declaration

func duplicateDocument(withContentsOf url: URL, copying duplicateByCopying: Bool, displayName displayNameOrNil: String?) throws -> NSDocument

Parameters

  • url:

    The URL locating the document from which contents of the new document are copied.

  • duplicateByCopying:

    If True, the contents located at the passed-in URL are copied into a file located in the directory used for the autosaved contents of untitled documents.

  • displayNameOrNil:

    If not nil then this value is used to derive a display name for the new document that does not match one that is already in use by an open document.

Return Value

The newly created NSDocument object, or nil if the document could not be created.

Discussion

The default implementation of this method copies the file if specified, determines the type of the document, calls makeDocument(for:withContentsOf:ofType:) to instantiate it, sends the document setDisplayName: to name it if displayNameOrNil is not nil, calls addDocument(_:) to record its opening, and sends the document makeWindowControllers() and showWindows() messages.

The default implementation of this method uses the file coordination mechanism introduced in OS X v10.7. It passes the document to the NSFileCoordinator method addFilePresenter(_:) immediately after calling the addDocument(_:) method. (The balancing invocation of the NSFileCoordinator method removeFilePresenter(_:) is in the NSDocument method close().)

You can override this method to customize how documents are duplicated. It is called by the NSDocument method duplicate(). It may also be called from other places in AppKit.

In most cases, an app does not need to call this method directly.

See Also

Creating and Opening Documents