Type Method

canConcurrentlyReadDocuments(ofType:)

Returns a Boolean value indicating whether the receiver reads multiple documents of the given type concurrently.

Declaration

class func canConcurrentlyReadDocuments(ofType typeName: String) -> Bool

Parameters

typeName

The string that identifies the document type.

Return Value

false by default; subclasses can override to return true, thereby causing documents of the specified type to be read concurrently.

Discussion

Your NSDocument subclass can implement this method to return true to enable loading of documents concurrently, using background threads. When this facility is enabled in this way, init(contentsOf:ofType:) executes on a background thread when opening files via the Open panel or from the Finder. This allows concurrent reading of multiple documents and also allows the app to be responsive while reading a large document.

The default implementation of this method returns false. A subclass override should return true only for document types whose reading is thread-safe, as described in Multicore Considerations. You should disable undo registration during document reading, which is a good idea even in the absence of concurrency.

If you are checking the current Apple Event for a search string, you should not enable concurrent document opening, because code handling a document opening triggered by an Apple Event cannot get the current Apple Event. This happens because the event is suspended until all documents are read to enable correct reporting of success or error.

See Also

Managing File Types

var fileType: String?

The name of the document type, as specified in the app’s Info.plist file.

var fileTypeFromLastRunSavePanel: String?

The file type that was last selected in the Save panel.

class func isNativeType(String) -> Bool

Returns a Boolean value indicating whether document data of the specified type is a native type—one the receiver can both read and write.

class var readableTypes: [String]

Returns the types of data the receiver can read natively and any types filterable to that native type.

class var writableTypes: [String]

Returns the types of data the receiver can write natively and any types filterable to that native type.

func writableTypes(for: NSDocument.SaveOperationType) -> [String]

Returns the names of the types to which this document can be saved for a specified kind of save operation.

func fileNameExtension(forType: String, saveOperation: NSDocument.SaveOperationType) -> String?

Returns a filename extension that can be appended to a base filename, for a specified file type and kind of save operation.