---
title: "write(to:ofType:for:originalContentsURL:)"
framework: appkit
role: symbol
role_heading: Instance Method
path: "appkit/nsdocument/write(to:oftype:for:originalcontentsurl:)"
---

# write(to:ofType:for:originalContentsURL:)

Writes the contents of the document to a file or file package located by a URL.

## Declaration

```swift
nonisolated func write(to url: URL, ofType typeName: String, for saveOperation: NSDocument.SaveOperationType, originalContentsURL absoluteOriginalContentsURL: URL?) throws
```

## Parameters

- `url`: The location to which the document contents are written.
- `typeName`: The string that identifies the document type.
- `saveOperation`: The type of save operation.
- `absoluteOriginalContentsURL`: The location of the previously saved copy of the document (if not nil).

## Discussion

Discussion The default implementation of this method merely invokes [self writeToURL:absoluteURL ofType:typeName error:outError]. You can override this method instead of one of the three simple writing methods (write(to:ofType:),fileWrapper(ofType:), and data(ofType:)) if your document writing machinery needs access to the on-disk representation of the document revision that is about to be overwritten. The value of absoluteURL is often not the same as [self fileURL]. Other times it is not the same as the URL for the final save destination. Likewise, absoluteOriginalContentsURL is often not the same value as [self fileURL]. If absoluteOriginalContentsURL is nil, either the document has never been saved or the user deleted the document file since it was opened. For backward binary compatibility with OS X v10.3 and earlier, if writeToFile:ofType:originalFile:saveOperation: is overridden and both URLs use the file: scheme, the default implementation of this method instead invokes: [self writeToFile:[absoluteURL path]       ofType:typeName       originalFile:[absoluteOriginalContentsURL path]       saveOperation:aSaveOperation]; The save operation used in this case is never NSAutosaveOperation; NSSaveToOperation is used instead. note: In Swift, this method is marked with the throws keyword to indicate that it throws an error in cases of failure. When overriding this method, use the throw statement to throw an NSError, as described in Error Handling in The Swift Programming Language and About Imported Cocoa Error Parameters.

## See Also

### Writing the Document’s Content

- [canAsynchronouslyWrite(to:ofType:for:)](appkit/nsdocument/canasynchronouslywrite(to:oftype:for:).md)
- [unblockUserInteraction()](appkit/nsdocument/unblockuserinteraction().md)
- [write(to:ofType:)](appkit/nsdocument/write(to:oftype:).md)
- [writeSafely(to:ofType:for:)](appkit/nsdocument/writesafely(to:oftype:for:).md)
- [fileWrapper(ofType:)](appkit/nsdocument/filewrapper(oftype:).md)
- [data(ofType:)](appkit/nsdocument/data(oftype:).md)
- [save(to:ofType:for:delegate:didSave:contextInfo:)](appkit/nsdocument/save(to:oftype:for:delegate:didsave:contextinfo:).md)
- [save(to:ofType:for:completionHandler:)](appkit/nsdocument/save(to:oftype:for:completionhandler:).md)
- [fileAttributesToWrite(to:ofType:for:originalContentsURL:)](appkit/nsdocument/fileattributestowrite(to:oftype:for:originalcontentsurl:).md)
- [NSDocument.SaveOperationType](appkit/nsdocument/saveoperationtype.md)
