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

# writeSafely(to:ofType:for:)

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

## Declaration

```swift
nonisolated func writeSafely(to url: URL, ofType typeName: String, for saveOperation: NSDocument.SaveOperationType) 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.

## Discussion

Discussion The default implementation of this method invokes write(to:ofType:for:originalContentsURL:). It also invokes fileAttributesToWrite(to:ofType:for:originalContentsURL:) and writes the returned attributes, if any, to the file. It may copy some attributes from the old on-disk revision of the document at the same time, if applicable. This method is responsible for doing document writing in a way that minimizes the danger of leaving the disk to which writing is being done in an inconsistent state in the event of an app crash, system crash, hardware failure, power outage, and so on. If you override this method, be sure to invoke the superclass implementation. For NSSaveOperation, the default implementation of this method uses the value in the keepBackupFile property to determine whether or not the old on-disk revision of the document, if there was one, should be preserved after being renamed. For backward binary compatibility with OS X v10.3 and earlier, the default implementation of this method instead invokes writeWithBackupToFile:ofType:saveOperation: if that method is is overridden and the URL uses the file: scheme. The save operation 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)
- [fileWrapper(ofType:)](appkit/nsdocument/filewrapper(oftype:).md)
- [data(ofType:)](appkit/nsdocument/data(oftype:).md)
- [write(to:ofType:for:originalContentsURL:)](appkit/nsdocument/write(to:oftype:for:originalcontentsurl:).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)
