---
title: "makeDocument(for:withContentsOf:ofType:)"
framework: appkit
role: symbol
role_heading: Instance Method
path: "appkit/nsdocumentcontroller/makedocument(for:withcontentsof:oftype:)"
---

# makeDocument(for:withContentsOf:ofType:)

Instantiates a document located by a URL, of a specified type, but by reading the contents for the document from another URL, and returns it if successful.

## Declaration

```swift
func makeDocument(for urlOrNil: URL?, withContentsOf contentsURL: URL, ofType typeName: String) throws -> NSDocument
```

## Parameters

- `urlOrNil`: The location of the new document object.
- `contentsURL`: The URL of the file that provides the contents for the new document.
- `typeName`: The type of the document.

## Return Value

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

## Discussion

Discussion The URL is specified by absoluteDocumentURL, the type by typeName, and the other URL providing the contents by absoluteDocumentContentsURL. If not successful, the method returns nil after setting outError to point to an NSError object that encapsulates the reason why the document could not be instantiated. The default implementation of this method calls documentClass(forType:) to find out the class of document to instantiate, allocates a document object, and initializes it by sending it an init(for:withContentsOf:ofType:) message. note: In Swift, this method returns a nonoptional result and is marked with the throws keyword to indicate that it throws an error in cases of failure. You call this method in a try expression and handle any errors in the catch clauses of a do statement, as described in Error Handling in The Swift Programming Language and About Imported Cocoa Error Parameters.

## See Also

### Creating and Opening Documents

- [document(for:)](appkit/nsdocumentcontroller/document(for:)-i5zi.md)
- [duplicateDocument(withContentsOf:copying:displayName:)](appkit/nsdocumentcontroller/duplicatedocument(withcontentsof:copying:displayname:).md)
- [openDocument(withContentsOf:display:completionHandler:)](appkit/nsdocumentcontroller/opendocument(withcontentsof:display:completionhandler:).md)
- [openUntitledDocumentAndDisplay(_:)](appkit/nsdocumentcontroller/openuntitleddocumentanddisplay(_:).md)
- [makeDocument(withContentsOf:ofType:)](appkit/nsdocumentcontroller/makedocument(withcontentsof:oftype:).md)
- [makeUntitledDocument(ofType:)](appkit/nsdocumentcontroller/makeuntitleddocument(oftype:).md)
- [reopenDocument(for:withContentsOf:display:completionHandler:)](appkit/nsdocumentcontroller/reopendocument(for:withcontentsof:display:completionhandler:).md)
