Instance Method

writeSafely(to:ofType:for:)

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

Declaration

func writeSafely(to url: URL, ofType typeName: String, for saveOperation: NSDocument.SaveOperationType) throws

Parameters

absoluteURL

The location to which the document contents are written.

typeName

The string that identifies the document type.

saveOperation

The type of save operation.

outError

On return, if the document contents could not be written, a pointer to an error object that encapsulates the reason they could not be written.

Return Value

true if the document contents could be written; otherwise, false.

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.

See Also

Reading From and Writing to URLs

func read(from: URL, ofType: String)

Sets the contents of this document by reading from a file or file package, of a specified type, located by a URL.

func write(to: URL, ofType: String)

Writes the contents of the document to a file or file package located by a URL, formatted to a specified type.

func write(to: URL, ofType: String, for: NSDocument.SaveOperationType, originalContentsURL: URL?)

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

func fileAttributesToWrite(to: URL, ofType: String, for: NSDocument.SaveOperationType, originalContentsURL: URL?) -> [String : Any]

As a file is being saved, returns the attributes that should be written to a file or file package located by a URL, formatted to a specified type, for a particular kind of save operation.

func save(to: URL, ofType: String, for: NSDocument.SaveOperationType, delegate: Any?, didSave: Selector?, contextInfo: UnsafeMutableRawPointer?)

Saves the contents of the document to a file or file package located by a URL, formatted to a specified type, for a particular kind of save operation.

func canAsynchronouslyWrite(to: URL, ofType: String, for: NSDocument.SaveOperationType) -> Bool

Returns whether the receiver can concurrently write to a file or file package located by a URL, formatted for a specific type, for a specific kind of save operation.

func changeCountToken(for: NSDocument.SaveOperationType) -> Any

Returns an object that encapsulates the current record of document changes at the beginning of a save operation.

func save(to: URL, ofType: String, for: NSDocument.SaveOperationType, completionHandler: (Error?) -> Void)

Saves the contents of the document to a file or file package located by a URL, formatted to a specified type, for a particular kind of save operation, and invokes the passed-in completion handler.

func updateChangeCount(withToken: Any, for: NSDocument.SaveOperationType)

Records the fact that saving has succeeded and updates related aspects of the change count mechanism.

func unblockUserInteraction()

Unblocks the main thread during asynchronous saving.