{"abstract":[{"text":"A protocol for implementing a minimal file system as an app extension.","type":"text"}],"hierarchy":{"paths":[["doc:\/\/com.apple.documentation\/documentation\/technologies","doc:\/\/FSKit\/documentation\/FSKit"]]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/FSKit\/documentation\/FSKit\/UnaryFileSystemExtension"},"kind":"symbol","legalNotices":{"copyright":"Copyright &copy; 2026 Apple Inc. All rights reserved.","privacyPolicy":"https:\/\/www.apple.com\/privacy\/privacy-policy","termsOfUse":"https:\/\/www.apple.com\/legal\/internet-services\/terms\/site.html"},"metadata":{"availableLanguages":["de-DE","en-US","es-419","fr-FR","it-IT","ja-JP","ko-KR","pt-BR","zh-CN"],"externalID":"s:5FSKit24UnaryFileSystemExtensionP","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"kind":"identifier","text":"UnaryFileSystemExtension"}],"modules":[{"name":"FSKit"}],"navigatorTitle":[{"kind":"identifier","text":"UnaryFileSystemExtension"}],"platforms":[{"introducedAt":"15.4","name":"macOS"}],"role":"symbol","roleHeading":"Protocol","symbolKind":"protocol","title":"UnaryFileSystemExtension"},"primaryContentSections":[{"declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"kind":"identifier","text":"UnaryFileSystemExtension"},{"kind":"text","text":" : "},{"identifier":"doc:\/\/com.apple.documentation\/documentation\/ExtensionFoundation\/AppExtension","kind":"typeIdentifier","preciseIdentifier":"s:19ExtensionFoundation03AppA0P","text":"AppExtension"}]}],"kind":"declarations"},{"content":[{"anchor":"overview","level":2,"text":"Overview","type":"heading"},{"inlineContent":[{"text":"Your app needs to do the following to implement a FSKit-compatible minimal file system:","type":"text"}],"type":"paragraph"},{"items":[{"content":[{"inlineContent":[{"text":"Create a subclass of ","type":"text"},{"identifier":"doc:\/\/FSKit\/documentation\/FSKit\/FSUnaryFileSystem","isActive":true,"type":"reference"},{"text":", which also conforms to ","type":"text"},{"identifier":"doc:\/\/FSKit\/documentation\/FSKit\/FSUnaryFileSystemOperations","isActive":true,"type":"reference"},{"text":".","type":"text"}],"type":"paragraph"}]},{"content":[{"inlineContent":[{"text":"Implement a ","type":"text"},{"code":"@main","type":"codeVoice"},{"text":" struct that conforms to the ","type":"text"},{"code":"UnaryFileSystemExtension","type":"codeVoice"},{"text":" protocol. Your implementation of this protocol returns the type of class from step 1 as its ","type":"text"},{"identifier":"doc:\/\/FSKit\/documentation\/FSKit\/UnaryFileSystemExtension\/FileSystem-swift.associatedtype","isActive":true,"type":"reference"},{"text":" associated type, and returns an instance of it as the ","type":"text"},{"identifier":"doc:\/\/FSKit\/documentation\/FSKit\/UnaryFileSystemExtension\/fileSystem-swift.property","isActive":true,"type":"reference"},{"text":" property.","type":"text"}],"type":"paragraph"}]}],"type":"orderedList"}],"kind":"content"}],"relationshipsSections":[{"identifiers":["doc:\/\/com.apple.documentation\/documentation\/ExtensionFoundation\/AppExtension"],"kind":"relationships","title":"Inherits From","type":"inheritsFrom"}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"topicSections":[{"anchor":"Declaring-the-implemented-file-system","identifiers":["doc:\/\/FSKit\/documentation\/FSKit\/UnaryFileSystemExtension\/fileSystem-swift.property","doc:\/\/FSKit\/documentation\/FSKit\/UnaryFileSystemExtension\/FileSystem-swift.associatedtype"],"title":"Declaring the implemented file system"}],"variants":[{"paths":["\/documentation\/fskit\/unaryfilesystemextension"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"FSKit-PageImage-card.png":{"alt":"A grid of document icons, standing upright, viewed from an isometric angle. The icons use different shades of blue to create a gradient effect.","identifier":"FSKit-PageImage-card.png","type":"image","variants":[{"traits":["2x","light"],"url":"\/images\/FSKit\/FSKit-PageImage-card@2x.png"},{"traits":["2x","dark"],"url":"\/images\/FSKit\/FSKit-PageImage-card~dark@2x.png"}]},"doc://FSKit/documentation/FSKit":{"abstract":[{"text":"Implement a file system that runs in user space.","type":"text"}],"identifier":"doc:\/\/FSKit\/documentation\/FSKit","images":[{"identifier":"FSKit-PageImage-card.png","type":"card"}],"kind":"symbol","role":"collection","title":"FSKit","type":"topic","url":"\/documentation\/fskit"},"doc://FSKit/documentation/FSKit/FSUnaryFileSystem":{"abstract":[{"text":"An abstract base class for implementing a minimal file system.","type":"text"}],"fragments":[{"kind":"keyword","text":"class"},{"kind":"text","text":" "},{"kind":"identifier","text":"FSUnaryFileSystem"}],"identifier":"doc:\/\/FSKit\/documentation\/FSKit\/FSUnaryFileSystem","kind":"symbol","navigatorTitle":[{"kind":"identifier","text":"FSUnaryFileSystem"}],"role":"symbol","title":"FSUnaryFileSystem","type":"topic","url":"\/documentation\/fskit\/fsunaryfilesystem"},"doc://FSKit/documentation/FSKit/FSUnaryFileSystemOperations":{"abstract":[{"text":"Operations performed by a unary file system.","type":"text"}],"fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"kind":"identifier","text":"FSUnaryFileSystemOperations"}],"identifier":"doc:\/\/FSKit\/documentation\/FSKit\/FSUnaryFileSystemOperations","kind":"symbol","navigatorTitle":[{"kind":"identifier","text":"FSUnaryFileSystemOperations"}],"role":"symbol","title":"FSUnaryFileSystemOperations","type":"topic","url":"\/documentation\/fskit\/fsunaryfilesystemoperations"},"doc://FSKit/documentation/FSKit/UnaryFileSystemExtension":{"abstract":[{"text":"A protocol for implementing a minimal file system as an app extension.","type":"text"}],"fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"kind":"identifier","text":"UnaryFileSystemExtension"}],"identifier":"doc:\/\/FSKit\/documentation\/FSKit\/UnaryFileSystemExtension","kind":"symbol","navigatorTitle":[{"kind":"identifier","text":"UnaryFileSystemExtension"}],"role":"symbol","title":"UnaryFileSystemExtension","type":"topic","url":"\/documentation\/fskit\/unaryfilesystemextension"},"doc://FSKit/documentation/FSKit/UnaryFileSystemExtension/FileSystem-swift.associatedtype":{"abstract":[{"text":"The type of file system your app extension provides.","type":"text"}],"fragments":[{"kind":"keyword","text":"associatedtype"},{"kind":"text","text":" "},{"kind":"identifier","text":"FileSystem"},{"kind":"text","text":" : "},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)FSUnaryFileSystem","text":"FSUnaryFileSystem"},{"kind":"text","text":", "},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(pl)FSUnaryFileSystemOperations","text":"FSUnaryFileSystemOperations"}],"identifier":"doc:\/\/FSKit\/documentation\/FSKit\/UnaryFileSystemExtension\/FileSystem-swift.associatedtype","kind":"symbol","required":true,"role":"symbol","title":"FileSystem","type":"topic","url":"\/documentation\/fskit\/unaryfilesystemextension\/filesystem-swift.associatedtype"},"doc://FSKit/documentation/FSKit/UnaryFileSystemExtension/fileSystem-swift.property":{"abstract":[{"text":"The instance of your file system type that your app extension provides.","type":"text"}],"fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"fileSystem"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:5FSKit24UnaryFileSystemExtensionP0cD0Qa","text":"FileSystem"}],"identifier":"doc:\/\/FSKit\/documentation\/FSKit\/UnaryFileSystemExtension\/fileSystem-swift.property","kind":"symbol","required":true,"role":"symbol","title":"fileSystem","type":"topic","url":"\/documentation\/fskit\/unaryfilesystemextension\/filesystem-swift.property"},"doc://com.apple.documentation/documentation/ExtensionFoundation/AppExtension":{"abstract":[{"text":"An interface you use to declare the content, structure, and behavior of an app extension.","type":"text"}],"fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"kind":"identifier","text":"AppExtension"}],"identifier":"doc:\/\/com.apple.documentation\/documentation\/ExtensionFoundation\/AppExtension","kind":"symbol","navigatorTitle":[{"kind":"identifier","text":"AppExtension"}],"role":"symbol","title":"AppExtension","type":"topic","url":"\/documentation\/extensionfoundation\/appextension"},"doc://com.apple.documentation/documentation/technologies":{"abstract":[],"identifier":"doc:\/\/com.apple.documentation\/documentation\/technologies","kind":"technologies","role":"overview","title":"Technologies","type":"topic","url":"\/documentation\/technologies"}},"variantOverrides":[{"patch":[{"op":"replace","path":"\/references\/doc:~1~1FSKit~1documentation~1FSKit~1FSUnaryFileSystem\/title","value":"FSUnaryFileSystem"},{"op":"replace","path":"\/references\/doc:~1~1FSKit~1documentation~1FSKit~1FSUnaryFileSystem\/fragments","value":[{"kind":"identifier","text":"FSUnaryFileSystem"}]},{"op":"replace","path":"\/references\/doc:~1~1FSKit~1documentation~1FSKit~1FSUnaryFileSystem\/navigatorTitle","value":[{"kind":"identifier","text":"FSUnaryFileSystem"}]},{"op":"replace","path":"\/references\/doc:~1~1FSKit~1documentation~1FSKit~1FSUnaryFileSystemOperations\/title","value":"FSUnaryFileSystemOperations"},{"op":"replace","path":"\/references\/doc:~1~1FSKit~1documentation~1FSKit~1FSUnaryFileSystemOperations\/fragments","value":[{"kind":"identifier","text":"FSUnaryFileSystemOperations"}]},{"op":"replace","path":"\/references\/doc:~1~1FSKit~1documentation~1FSKit~1FSUnaryFileSystemOperations\/navigatorTitle","value":[{"kind":"identifier","text":"FSUnaryFileSystemOperations"}]}],"traits":[{"interfaceLanguage":"occ"}]}]}