1 line
50 KiB
JSON
1 line
50 KiB
JSON
{"primaryContentSections":[{"kind":"content","content":[{"anchor":"Overview","level":2,"type":"heading","text":"Overview"},{"type":"paragraph","inlineContent":[{"type":"image","identifier":"Logo.png"}]},{"type":"paragraph","inlineContent":[{"type":"text","text":"SwiftKit is divided into the sections found in the Topics section below."}]},{"anchor":"Supported-Platforms","level":2,"type":"heading","text":"Supported Platforms"},{"type":"paragraph","inlineContent":[{"type":"text","text":"SwiftKit supports "},{"type":"codeVoice","code":"iOS 13"},{"type":"text","text":", "},{"type":"codeVoice","code":"macOS 11"},{"type":"text","text":", "},{"type":"codeVoice","code":"tvOS 13"},{"type":"text","text":" and "},{"type":"codeVoice","code":"watchOS 6"},{"type":"text","text":"."}]},{"anchor":"Installation","level":2,"type":"heading","text":"Installation"},{"type":"paragraph","inlineContent":[{"type":"text","text":"SwiftKit can be installed with the Swift Package Manager:"}]},{"type":"codeListing","syntax":null,"code":["https:\/\/github.com\/danielsaidi\/SwiftKit.git"]},{"type":"paragraph","inlineContent":[{"type":"text","text":"or with CocoaPods:"}]},{"type":"codeListing","syntax":null,"code":["pod DSSwiftKit"]},{"type":"paragraph","inlineContent":[{"type":"text","text":"You can also clone the repository and build the library locally."}]},{"anchor":"About-this-documentation","level":2,"type":"heading","text":"About this documentation"},{"type":"paragraph","inlineContent":[{"type":"text","text":"The online documentation is currently iOS-specific. To generate documentation for other platforms, open the package in Xcode, select a simulator then run "},{"type":"codeVoice","code":"Product\/Build Documentation"},{"type":"text","text":"."}]},{"type":"paragraph","inlineContent":[{"type":"text","text":"Note that type extensions are not included in this documentation."}]},{"anchor":"License","level":2,"type":"heading","text":"License"},{"type":"paragraph","inlineContent":[{"type":"text","text":"SwiftKit is available under the MIT license."}]}]}],"schemaVersion":{"major":0,"minor":2,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/swiftkit"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/SwiftKit\/documentation\/SwiftKit","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"SwiftKit adds extra functionality to the Swift framework, like extensions to native types, utilites, services etc."}],"kind":"symbol","metadata":{"roleHeading":"Framework","externalID":"SwiftKit","title":"SwiftKit","symbolKind":"module","role":"collection","modules":[{"name":"SwiftKit"}]},"hierarchy":{"paths":[[]]},"topicSections":[{"title":"Authentication","identifiers":["doc:\/\/SwiftKit\/documentation\/SwiftKit\/Authentication","doc:\/\/SwiftKit\/documentation\/SwiftKit\/AuthenticationService","doc:\/\/SwiftKit\/documentation\/SwiftKit\/AuthenticationServiceError","doc:\/\/SwiftKit\/documentation\/SwiftKit\/BiometricAuthenticationService","doc:\/\/SwiftKit\/documentation\/SwiftKit\/CachedAuthenticationService","doc:\/\/SwiftKit\/documentation\/SwiftKit\/CachedAuthenticationServiceProxy","doc:\/\/SwiftKit\/documentation\/SwiftKit\/LocalAuthenticationService"]},{"title":"Bundle","identifiers":["doc:\/\/SwiftKit\/documentation\/SwiftKit\/BundleInformation"]},{"title":"Data","identifiers":["doc:\/\/SwiftKit\/documentation\/SwiftKit\/Base64StringCoder","doc:\/\/SwiftKit\/documentation\/SwiftKit\/CsvParser","doc:\/\/SwiftKit\/documentation\/SwiftKit\/CsvParserError","doc:\/\/SwiftKit\/documentation\/SwiftKit\/Filter","doc:\/\/SwiftKit\/documentation\/SwiftKit\/FilterOption","doc:\/\/SwiftKit\/documentation\/SwiftKit\/MimeType","doc:\/\/SwiftKit\/documentation\/SwiftKit\/StandardCsvParser","doc:\/\/SwiftKit\/documentation\/SwiftKit\/StringCoder","doc:\/\/SwiftKit\/documentation\/SwiftKit\/StringDecoder","doc:\/\/SwiftKit\/documentation\/SwiftKit\/StringEncoder"]},{"title":"Device","identifiers":["doc:\/\/SwiftKit\/documentation\/SwiftKit\/DeviceIdentifier","doc:\/\/SwiftKit\/documentation\/SwiftKit\/KeychainBasedDeviceIdentifier","doc:\/\/SwiftKit\/documentation\/SwiftKit\/UserDefaultsBasedDeviceIdentifier"]},{"title":"Extensions","abstract":[{"type":"text","text":"This namespace contains a lot of extensions and protocols that are applied to native types."}],"identifiers":["doc:\/\/SwiftKit\/documentation\/SwiftKit\/PreferredClosestValue","doc:\/\/SwiftKit\/documentation\/SwiftKit\/NumericStringRepresentable"]},{"title":"Files","identifiers":["doc:\/\/SwiftKit\/documentation\/SwiftKit\/BundleFileFinder","doc:\/\/SwiftKit\/documentation\/SwiftKit\/DirectoryService","doc:\/\/SwiftKit\/documentation\/SwiftKit\/FileExporter","doc:\/\/SwiftKit\/documentation\/SwiftKit\/FileFinder","doc:\/\/SwiftKit\/documentation\/SwiftKit\/StandardDirectoryService","doc:\/\/SwiftKit\/documentation\/SwiftKit\/StandardFileExporter"]},{"title":"Geo","abstract":[{"type":"text","text":"This namespace contains geo-specific extensions as well as utils:"}],"identifiers":["doc:\/\/SwiftKit\/documentation\/SwiftKit\/AppleMapsService","doc:\/\/SwiftKit\/documentation\/SwiftKit\/ExternalMapService","doc:\/\/SwiftKit\/documentation\/SwiftKit\/GoogleMapsService","doc:\/\/SwiftKit\/documentation\/SwiftKit\/WorldCoordinate"]},{"title":"iCloud","abstract":[{"type":"text","text":"This namespace contains iCloud-specific extensions as well as utils:"}],"identifiers":["doc:\/\/SwiftKit\/documentation\/SwiftKit\/iCloudDocumentSync","doc:\/\/SwiftKit\/documentation\/SwiftKit\/StandardiCloudDocumentSync"]},{"title":"Keychain","identifiers":["doc:\/\/SwiftKit\/documentation\/SwiftKit\/KeychainReader","doc:\/\/SwiftKit\/documentation\/SwiftKit\/KeychainService","doc:\/\/SwiftKit\/documentation\/SwiftKit\/KeychainWrapper","doc:\/\/SwiftKit\/documentation\/SwiftKit\/KeychainWriter","doc:\/\/SwiftKit\/documentation\/SwiftKit\/StandardKeychainService","doc:\/\/SwiftKit\/documentation\/SwiftKit\/KeychainAttrRepresentable","doc:\/\/SwiftKit\/documentation\/SwiftKit\/KeychainItemAccessibility"]},{"title":"Localization","identifiers":["doc:\/\/SwiftKit\/documentation\/SwiftKit\/BundleTranslator","doc:\/\/SwiftKit\/documentation\/SwiftKit\/LocalizationNotification","doc:\/\/SwiftKit\/documentation\/SwiftKit\/LocalizationService","doc:\/\/SwiftKit\/documentation\/SwiftKit\/StandardLocalizationService","doc:\/\/SwiftKit\/documentation\/SwiftKit\/StandardTranslator","doc:\/\/SwiftKit\/documentation\/SwiftKit\/Translator"]},{"title":"Network","identifiers":["doc:\/\/SwiftKit\/documentation\/SwiftKit\/ApiCompletion","doc:\/\/SwiftKit\/documentation\/SwiftKit\/ApiEnvironment","doc:\/\/SwiftKit\/documentation\/SwiftKit\/ApiError","doc:\/\/SwiftKit\/documentation\/SwiftKit\/ApiModel","doc:\/\/SwiftKit\/documentation\/SwiftKit\/ApiResult","doc:\/\/SwiftKit\/documentation\/SwiftKit\/ApiRoute","doc:\/\/SwiftKit\/documentation\/SwiftKit\/ApiService","doc:\/\/SwiftKit\/documentation\/SwiftKit\/HttpMethod"]},{"title":"Services","identifiers":["doc:\/\/SwiftKit\/documentation\/SwiftKit\/Decorator","doc:\/\/SwiftKit\/documentation\/SwiftKit\/MultiProxy","doc:\/\/SwiftKit\/documentation\/SwiftKit\/Proxy"]},{"title":"Validation","identifiers":["doc:\/\/SwiftKit\/documentation\/SwiftKit\/EmailValidator","doc:\/\/SwiftKit\/documentation\/SwiftKit\/Validator"]},{"title":"Classes","identifiers":["doc:\/\/SwiftKit\/documentation\/SwiftKit\/IoC","doc:\/\/SwiftKit\/documentation\/SwiftKit\/StandardStoreService","doc:\/\/SwiftKit\/documentation\/SwiftKit\/StoreContext"]},{"title":"Protocols","identifiers":["doc:\/\/SwiftKit\/documentation\/SwiftKit\/IoCContainer","doc:\/\/SwiftKit\/documentation\/SwiftKit\/StoreService"]},{"title":"Enumerations","identifiers":["doc:\/\/SwiftKit\/documentation\/SwiftKit\/StoreServiceError"]}],"references":{"doc://SwiftKit/documentation/SwiftKit/MultiProxy":{"role":"symbol","title":"MultiProxy","fragments":[{"kind":"keyword","text":"class"},{"kind":"text","text":" "},{"kind":"identifier","text":"MultiProxy"}],"abstract":[{"type":"text","text":"This class can be implemented by any classes that should be"},{"type":"text","text":" "},{"type":"text","text":"used to proxy a certain operation to many targets."}],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/MultiProxy","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"MultiProxy"}],"url":"\/documentation\/swiftkit\/multiproxy"},"doc://SwiftKit/documentation/SwiftKit/MimeType":{"role":"symbol","title":"MimeType","fragments":[{"kind":"keyword","text":"enum"},{"kind":"text","text":" "},{"kind":"identifier","text":"MimeType"}],"abstract":[{"type":"text","text":"This enum represents a set of different MIME and file types."}],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/MimeType","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"MimeType"}],"url":"\/documentation\/swiftkit\/mimetype"},"doc://SwiftKit/documentation/SwiftKit/StandardiCloudDocumentSync":{"role":"symbol","title":"StandardiCloudDocumentSync","fragments":[{"kind":"keyword","text":"class"},{"kind":"text","text":" "},{"kind":"identifier","text":"StandardiCloudDocumentSync"}],"abstract":[{"type":"text","text":"This class can be used to sync iCloud document changes in a"},{"type":"text","text":" "},{"type":"text","text":"shared uqibuity container."}],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/StandardiCloudDocumentSync","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"StandardiCloudDocumentSync"}],"url":"\/documentation\/swiftkit\/standardiclouddocumentsync"},"doc://SwiftKit/documentation/SwiftKit/StringCoder":{"role":"symbol","title":"StringCoder","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"kind":"identifier","text":"StringCoder"}],"abstract":[{"type":"text","text":"This protocol can be implemented by classes that can encode"},{"type":"text","text":" "},{"type":"text","text":"and decode strings."}],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/StringCoder","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"StringCoder"}],"url":"\/documentation\/swiftkit\/stringcoder"},"doc://SwiftKit/documentation/SwiftKit/KeychainWrapper":{"role":"symbol","title":"KeychainWrapper","fragments":[{"kind":"keyword","text":"class"},{"kind":"text","text":" "},{"kind":"identifier","text":"KeychainWrapper"}],"abstract":[{"type":"text","text":"This class help make device keychain access easier in Swift."},{"type":"text","text":" "},{"type":"text","text":"It is designed to make accessing the Keychain services more"},{"type":"text","text":" "},{"type":"text","text":"like using "},{"type":"codeVoice","code":"NSUserDefaults"},{"type":"text","text":", which is much more familiar to"},{"type":"text","text":" "},{"type":"text","text":"developers in general."}],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/KeychainWrapper","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"KeychainWrapper"}],"url":"\/documentation\/swiftkit\/keychainwrapper"},"doc://SwiftKit/documentation/SwiftKit/CsvParserError":{"role":"symbol","title":"CsvParserError","fragments":[{"kind":"keyword","text":"enum"},{"kind":"text","text":" "},{"kind":"identifier","text":"CsvParserError"}],"abstract":[],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/CsvParserError","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"CsvParserError"}],"url":"\/documentation\/swiftkit\/csvparsererror"},"doc://SwiftKit/documentation/SwiftKit/FileFinder":{"role":"symbol","title":"FileFinder","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"kind":"identifier","text":"FileFinder"}],"abstract":[{"type":"text","text":"This protocol can be implemented by types that can look for"},{"type":"text","text":" "},{"type":"text","text":"files in various ways."}],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/FileFinder","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"FileFinder"}],"url":"\/documentation\/swiftkit\/filefinder"},"doc://SwiftKit/documentation/SwiftKit/StandardFileExporter":{"role":"symbol","title":"StandardFileExporter","fragments":[{"kind":"keyword","text":"class"},{"kind":"text","text":" "},{"kind":"identifier","text":"StandardFileExporter"}],"abstract":[{"type":"text","text":"This file exporter can export data to the file system using"},{"type":"text","text":" "},{"type":"text","text":"a file manager and a certain directory."}],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/StandardFileExporter","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"StandardFileExporter"}],"url":"\/documentation\/swiftkit\/standardfileexporter"},"doc://SwiftKit/documentation/SwiftKit/LocalAuthenticationService":{"role":"symbol","title":"LocalAuthenticationService","fragments":[{"kind":"keyword","text":"class"},{"kind":"text","text":" "},{"kind":"identifier","text":"LocalAuthenticationService"}],"abstract":[{"type":"text","text":"This service uses "},{"type":"codeVoice","code":"LocalAuthentication"},{"type":"text","text":" to authenticate the"},{"type":"text","text":" "},{"type":"text","text":"current user."}],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/LocalAuthenticationService","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"LocalAuthenticationService"}],"url":"\/documentation\/swiftkit\/localauthenticationservice"},"doc://SwiftKit/documentation/SwiftKit/Decorator":{"role":"symbol","title":"Decorator","fragments":[{"kind":"keyword","text":"class"},{"kind":"text","text":" "},{"kind":"identifier","text":"Decorator"}],"abstract":[{"type":"text","text":"This class can be inherited by any class that wraps another"},{"type":"text","text":" "},{"type":"text","text":"class that implements the same protocol."}],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/Decorator","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"Decorator"}],"url":"\/documentation\/swiftkit\/decorator"},"doc://SwiftKit/documentation/SwiftKit/GoogleMapsService":{"role":"symbol","title":"GoogleMapsService","fragments":[{"kind":"keyword","text":"class"},{"kind":"text","text":" "},{"kind":"identifier","text":"GoogleMapsService"}],"abstract":[],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/GoogleMapsService","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"GoogleMapsService"}],"url":"\/documentation\/swiftkit\/googlemapsservice"},"doc://SwiftKit/documentation/SwiftKit/KeychainBasedDeviceIdentifier":{"role":"symbol","title":"KeychainBasedDeviceIdentifier","fragments":[{"kind":"keyword","text":"class"},{"kind":"text","text":" "},{"kind":"identifier","text":"KeychainBasedDeviceIdentifier"}],"abstract":[{"type":"text","text":"This device identifier generates a unique device identifier"},{"type":"text","text":" "},{"type":"text","text":"and stores it in keychain, to make it possible to reuse the"},{"type":"text","text":" "},{"type":"text","text":"identifier, even if the app is uninstalled."}],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/KeychainBasedDeviceIdentifier","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"KeychainBasedDeviceIdentifier"}],"url":"\/documentation\/swiftkit\/keychainbaseddeviceidentifier"},"doc://SwiftKit/documentation/SwiftKit/FileExporter":{"role":"symbol","title":"FileExporter","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"kind":"identifier","text":"FileExporter"}],"abstract":[{"type":"text","text":"This protocol can be implemented by any classes that can be"},{"type":"text","text":" "},{"type":"text","text":"used to export data to the file system."}],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/FileExporter","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"FileExporter"}],"url":"\/documentation\/swiftkit\/fileexporter"},"doc://SwiftKit/documentation/SwiftKit/KeychainItemAccessibility":{"role":"symbol","title":"KeychainItemAccessibility","fragments":[{"kind":"keyword","text":"enum"},{"kind":"text","text":" "},{"kind":"identifier","text":"KeychainItemAccessibility"}],"abstract":[{"type":"text","text":"This enum defines the various access scopes that a keychain"},{"type":"text","text":" "},{"type":"text","text":"item can use. The names follow certain conventions that are"},{"type":"text","text":" "},{"type":"text","text":"defined in the list below:"}],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/KeychainItemAccessibility","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"KeychainItemAccessibility"}],"url":"\/documentation\/swiftkit\/keychainitemaccessibility"},"doc://SwiftKit/documentation/SwiftKit/ApiEnvironment":{"role":"symbol","title":"ApiEnvironment","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"kind":"identifier","text":"ApiEnvironment"}],"abstract":[{"type":"text","text":"This protocol represents an external api environment with a"},{"type":"text","text":" "},{"type":"text","text":"specific root "},{"type":"codeVoice","code":"url"},{"type":"text","text":", e.g. test, staging or production."}],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/ApiEnvironment","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ApiEnvironment"}],"url":"\/documentation\/swiftkit\/apienvironment"},"doc://SwiftKit/documentation/SwiftKit/FilterOption":{"role":"symbol","title":"FilterOption","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"kind":"identifier","text":"FilterOption"}],"abstract":[{"type":"text","text":"This protocol can be implemented by anything that can be used"}],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/FilterOption","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"FilterOption"}],"url":"\/documentation\/swiftkit\/filteroption"},"doc://SwiftKit/documentation/SwiftKit/ApiModel":{"role":"symbol","title":"ApiModel","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"kind":"identifier","text":"ApiModel"}],"abstract":[{"type":"text","text":"This protocol can be implemented by any api models that can"},{"type":"text","text":" "},{"type":"text","text":"be fetched from an api and converted to a local model."}],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/ApiModel","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ApiModel"}],"url":"\/documentation\/swiftkit\/apimodel"},"doc://SwiftKit/documentation/SwiftKit/StandardCsvParser":{"role":"symbol","title":"StandardCsvParser","fragments":[{"kind":"keyword","text":"class"},{"kind":"text","text":" "},{"kind":"identifier","text":"StandardCsvParser"}],"abstract":[],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/StandardCsvParser","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"StandardCsvParser"}],"url":"\/documentation\/swiftkit\/standardcsvparser"},"doc://SwiftKit/documentation/SwiftKit/CsvParser":{"role":"symbol","title":"CsvParser","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"kind":"identifier","text":"CsvParser"}],"abstract":[{"type":"text","text":"This protocol can be implemented by classes that can handle"},{"type":"text","text":" "},{"type":"text","text":"parsing of comma-separated value files and strings."}],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/CsvParser","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"CsvParser"}],"url":"\/documentation\/swiftkit\/csvparser"},"doc://SwiftKit/documentation/SwiftKit/AuthenticationService":{"role":"symbol","title":"AuthenticationService","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"kind":"identifier","text":"AuthenticationService"}],"abstract":[{"type":"text","text":"This protocol can be implemented by any classes that can be"},{"type":"text","text":" "},{"type":"text","text":"used to authenticate the user."}],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/AuthenticationService","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"AuthenticationService"}],"url":"\/documentation\/swiftkit\/authenticationservice"},"doc://SwiftKit/documentation/SwiftKit/ApiResult":{"role":"symbol","title":"ApiResult","fragments":[{"kind":"keyword","text":"typealias"},{"kind":"text","text":" "},{"kind":"identifier","text":"ApiResult"}],"abstract":[{"type":"text","text":"This result type is used by the "},{"type":"codeVoice","code":"ApiCompletion"},{"type":"text","text":"."}],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/ApiResult","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ApiResult"}],"url":"\/documentation\/swiftkit\/apiresult"},"doc://SwiftKit/documentation/SwiftKit/AuthenticationServiceError":{"role":"symbol","title":"AuthenticationServiceError","fragments":[{"kind":"keyword","text":"enum"},{"kind":"text","text":" "},{"kind":"identifier","text":"AuthenticationServiceError"}],"abstract":[{"type":"text","text":"This enum represents various authentication errors that can"},{"type":"text","text":" "},{"type":"text","text":"occur while a user is being authenticated."}],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/AuthenticationServiceError","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"AuthenticationServiceError"}],"url":"\/documentation\/swiftkit\/authenticationserviceerror"},"Logo.png":{"alt":"SwiftKit logo","type":"image","identifier":"Logo.png","variants":[{"url":"\/images\/Logo.png","traits":["1x","light"]}]},"doc://SwiftKit/documentation/SwiftKit/NumericStringRepresentable":{"role":"symbol","title":"NumericStringRepresentable","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"kind":"identifier","text":"NumericStringRepresentable"}],"abstract":[],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/NumericStringRepresentable","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"NumericStringRepresentable"}],"url":"\/documentation\/swiftkit\/numericstringrepresentable"},"doc://SwiftKit/documentation/SwiftKit/DirectoryService":{"role":"symbol","title":"DirectoryService","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"kind":"identifier","text":"DirectoryService"}],"abstract":[{"type":"text","text":"This service can be implemented by classes that can be used"},{"type":"text","text":" "},{"type":"text","text":"to handle files within a certain local file directory."}],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/DirectoryService","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"DirectoryService"}],"url":"\/documentation\/swiftkit\/directoryservice"},"doc://SwiftKit/documentation/SwiftKit/Filter":{"role":"symbol","title":"Filter","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Filter"}],"abstract":[{"type":"text","text":"This struct lets you specify available and selected options"},{"type":"text","text":" "},{"type":"text","text":"of a certain type."}],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/Filter","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"Filter"}],"url":"\/documentation\/swiftkit\/filter"},"doc://SwiftKit/documentation/SwiftKit/StandardLocalizationService":{"role":"symbol","title":"StandardLocalizationService","fragments":[{"kind":"keyword","text":"class"},{"kind":"text","text":" "},{"kind":"identifier","text":"StandardLocalizationService"}],"abstract":[{"type":"text","text":"This service lets you change the locale of your app without"},{"type":"text","text":" "},{"type":"text","text":"having to restart the app for the change to be applied."}],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/StandardLocalizationService","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"StandardLocalizationService"}],"url":"\/documentation\/swiftkit\/standardlocalizationservice"},"doc://SwiftKit/documentation/SwiftKit/StandardKeychainService":{"role":"symbol","title":"StandardKeychainService","fragments":[{"kind":"keyword","text":"class"},{"kind":"text","text":" "},{"kind":"identifier","text":"StandardKeychainService"}],"abstract":[{"type":"text","text":"This is a standard implementation of "},{"type":"codeVoice","code":"KeychainService"},{"type":"text","text":" that"},{"type":"text","text":" "},{"type":"text","text":"uses a "},{"type":"codeVoice","code":"KeychainWrapper"},{"type":"text","text":" to sync data with the keychain."}],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/StandardKeychainService","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"StandardKeychainService"}],"url":"\/documentation\/swiftkit\/standardkeychainservice"},"doc://SwiftKit/documentation/SwiftKit/IoC":{"deprecated":true,"role":"symbol","title":"IoC","fragments":[{"kind":"keyword","text":"class"},{"kind":"text","text":" "},{"kind":"identifier","text":"IoC"}],"abstract":[{"type":"text","text":"This class can be used to remove coupling to your preferred"},{"type":"text","text":" "},{"type":"text","text":"IoC library, e.g. Dip or Swinject."}],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/IoC","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"IoC"}],"url":"\/documentation\/swiftkit\/ioc"},"doc://SwiftKit/documentation/SwiftKit/KeychainService":{"role":"symbol","title":"KeychainService","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"kind":"identifier","text":"KeychainService"}],"abstract":[{"type":"text","text":"This protocol can be implemented by keychain-based services"},{"type":"text","text":" "},{"type":"text","text":"that can read from and write to the device keychain."}],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/KeychainService","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"KeychainService"}],"url":"\/documentation\/swiftkit\/keychainservice"},"doc://SwiftKit/documentation/SwiftKit/StoreServiceError":{"deprecated":true,"role":"symbol","title":"StoreServiceError","fragments":[{"kind":"keyword","text":"enum"},{"kind":"text","text":" "},{"kind":"identifier","text":"StoreServiceError"}],"abstract":[],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/StoreServiceError","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"StoreServiceError"}],"url":"\/documentation\/swiftkit\/storeserviceerror"},"doc://SwiftKit/documentation/SwiftKit/BundleTranslator":{"role":"symbol","title":"BundleTranslator","fragments":[{"kind":"keyword","text":"class"},{"kind":"text","text":" "},{"kind":"identifier","text":"BundleTranslator"}],"abstract":[{"type":"text","text":"This "},{"type":"codeVoice","code":"Translator"},{"type":"text","text":" translates keys using a certain "},{"type":"codeVoice","code":"Bundle"},{"type":"text","text":"."}],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/BundleTranslator","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"BundleTranslator"}],"url":"\/documentation\/swiftkit\/bundletranslator"},"doc://SwiftKit/documentation/SwiftKit/BiometricAuthenticationService":{"role":"symbol","title":"BiometricAuthenticationService","fragments":[{"kind":"keyword","text":"class"},{"kind":"text","text":" "},{"kind":"identifier","text":"BiometricAuthenticationService"}],"abstract":[{"type":"text","text":"This authentication service uses "},{"type":"codeVoice","code":"LocalAuthentication"},{"type":"text","text":" such"},{"type":"text","text":" "},{"type":"text","text":"as "},{"type":"codeVoice","code":"FaceID"},{"type":"text","text":" or "},{"type":"codeVoice","code":"TouchID"},{"type":"text","text":" to authenticate the user."}],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/BiometricAuthenticationService","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"BiometricAuthenticationService"}],"url":"\/documentation\/swiftkit\/biometricauthenticationservice"},"doc://SwiftKit/documentation/SwiftKit/Authentication":{"role":"symbol","title":"Authentication","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Authentication"}],"abstract":[{"type":"text","text":"This struct represents a unique authentication type."}],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/Authentication","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"Authentication"}],"url":"\/documentation\/swiftkit\/authentication"},"doc://SwiftKit/documentation/SwiftKit/BundleInformation":{"role":"symbol","title":"BundleInformation","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"kind":"identifier","text":"BundleInformation"}],"abstract":[{"type":"text","text":"This protocol can be implemented by types that can provide information about the current bundle."}],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/BundleInformation","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"BundleInformation"}],"url":"\/documentation\/swiftkit\/bundleinformation"},"doc://SwiftKit/documentation/SwiftKit/KeychainReader":{"role":"symbol","title":"KeychainReader","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"kind":"identifier","text":"KeychainReader"}],"abstract":[{"type":"text","text":"This protocol can be implemented by keychain-based services"},{"type":"text","text":" "},{"type":"text","text":"that can read from the device keychain."}],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/KeychainReader","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"KeychainReader"}],"url":"\/documentation\/swiftkit\/keychainreader"},"doc://SwiftKit/documentation/SwiftKit/EmailValidator":{"role":"symbol","title":"EmailValidator","fragments":[{"kind":"keyword","text":"class"},{"kind":"text","text":" "},{"kind":"identifier","text":"EmailValidator"}],"abstract":[{"type":"text","text":"This "},{"type":"codeVoice","code":"Validator"},{"type":"text","text":" can be used to validate e-mail addresses."}],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/EmailValidator","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"EmailValidator"}],"url":"\/documentation\/swiftkit\/emailvalidator"},"doc://SwiftKit/documentation/SwiftKit/StoreContext":{"deprecated":true,"role":"symbol","title":"StoreContext","fragments":[{"kind":"keyword","text":"class"},{"kind":"text","text":" "},{"kind":"identifier","text":"StoreContext"}],"abstract":[],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/StoreContext","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"StoreContext"}],"url":"\/documentation\/swiftkit\/storecontext"},"doc://SwiftKit/documentation/SwiftKit/StringEncoder":{"role":"symbol","title":"StringEncoder","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"kind":"identifier","text":"StringEncoder"}],"abstract":[{"type":"text","text":"This protocol can be implemented by classes that can encode"},{"type":"text","text":" "},{"type":"text","text":"strings."}],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/StringEncoder","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"StringEncoder"}],"url":"\/documentation\/swiftkit\/stringencoder"},"doc://SwiftKit/documentation/SwiftKit/CachedAuthenticationServiceProxy":{"role":"symbol","title":"CachedAuthenticationServiceProxy","fragments":[{"kind":"keyword","text":"class"},{"kind":"text","text":" "},{"kind":"identifier","text":"CachedAuthenticationServiceProxy"}],"abstract":[{"type":"text","text":"This class wraps another "},{"type":"reference","isActive":true,"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/AuthenticationService"},{"type":"text","text":" instance"},{"type":"text","text":" "},{"type":"text","text":"and keeps authentication results in a cache."}],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/CachedAuthenticationServiceProxy","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"CachedAuthenticationServiceProxy"}],"url":"\/documentation\/swiftkit\/cachedauthenticationserviceproxy"},"doc://SwiftKit/documentation/SwiftKit/KeychainWriter":{"role":"symbol","title":"KeychainWriter","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"kind":"identifier","text":"KeychainWriter"}],"abstract":[{"type":"text","text":"This protocol can be implemented by keychain-based services"},{"type":"text","text":" "},{"type":"text","text":"that can write to the user’s keychain."}],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/KeychainWriter","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"KeychainWriter"}],"url":"\/documentation\/swiftkit\/keychainwriter"},"doc://SwiftKit/documentation/SwiftKit/HttpMethod":{"role":"symbol","title":"HttpMethod","fragments":[{"kind":"keyword","text":"enum"},{"kind":"text","text":" "},{"kind":"identifier","text":"HttpMethod"}],"abstract":[{"type":"text","text":"This enum lists the various HTTP methods that are supported"},{"type":"text","text":" "},{"type":"text","text":"by REST."}],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/HttpMethod","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"HttpMethod"}],"url":"\/documentation\/swiftkit\/httpmethod"},"doc://SwiftKit/documentation/SwiftKit/ExternalMapService":{"role":"symbol","title":"ExternalMapService","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"kind":"identifier","text":"ExternalMapService"}],"abstract":[{"type":"text","text":"This protocol can be implemented by services that provide a"},{"type":"text","text":" "},{"type":"text","text":"set of urls to coordinates or navigation paths, that can be"},{"type":"text","text":" "},{"type":"text","text":"opened in an external map application."}],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/ExternalMapService","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ExternalMapService"}],"url":"\/documentation\/swiftkit\/externalmapservice"},"doc://SwiftKit/documentation/SwiftKit/Proxy":{"role":"symbol","title":"Proxy","fragments":[{"kind":"keyword","text":"class"},{"kind":"text","text":" "},{"kind":"identifier","text":"Proxy"}],"abstract":[{"type":"text","text":"This class can be implemented by any classes that should be"},{"type":"text","text":" "},{"type":"text","text":"used to proxy a certain operation to another target."}],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/Proxy","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"Proxy"}],"url":"\/documentation\/swiftkit\/proxy"},"doc://SwiftKit/documentation/SwiftKit/WorldCoordinate":{"role":"symbol","title":"WorldCoordinate","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"WorldCoordinate"}],"abstract":[{"type":"text","text":"This struct can be used to represent world coordinates, but"},{"type":"text","text":" "},{"type":"text","text":"without bloating "},{"type":"codeVoice","code":"CLLocationCoordinate2D"},{"type":"text","text":" with static props."}],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/WorldCoordinate","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"WorldCoordinate"}],"url":"\/documentation\/swiftkit\/worldcoordinate"},"doc://SwiftKit/documentation/SwiftKit":{"role":"collection","title":"SwiftKit","abstract":[{"type":"text","text":"SwiftKit adds extra functionality to the Swift framework, like extensions to native types, utilites, services etc."}],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit","kind":"symbol","type":"topic","url":"\/documentation\/swiftkit"},"doc://SwiftKit/documentation/SwiftKit/StandardTranslator":{"role":"symbol","title":"StandardTranslator","fragments":[{"kind":"keyword","text":"class"},{"kind":"text","text":" "},{"kind":"identifier","text":"StandardTranslator"}],"abstract":[{"type":"text","text":"This standard "},{"type":"reference","isActive":true,"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/Translator"},{"type":"text","text":" implementation translates keys"},{"type":"text","text":" "},{"type":"text","text":"using "},{"type":"codeVoice","code":"NSLocalizedString"},{"type":"text","text":"."}],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/StandardTranslator","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"StandardTranslator"}],"url":"\/documentation\/swiftkit\/standardtranslator"},"doc://SwiftKit/documentation/SwiftKit/Base64StringCoder":{"role":"symbol","title":"Base64StringCoder","fragments":[{"kind":"keyword","text":"class"},{"kind":"text","text":" "},{"kind":"identifier","text":"Base64StringCoder"}],"abstract":[{"type":"text","text":"This coder can encode and decode strings to and from base64."}],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/Base64StringCoder","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"Base64StringCoder"}],"url":"\/documentation\/swiftkit\/base64stringcoder"},"doc://SwiftKit/documentation/SwiftKit/ApiService":{"role":"symbol","title":"ApiService","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"kind":"identifier","text":"ApiService"}],"abstract":[{"type":"text","text":"This protocol can be implemented by any service that can be"},{"type":"text","text":" "},{"type":"text","text":"used to communicate with an external api."}],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/ApiService","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ApiService"}],"url":"\/documentation\/swiftkit\/apiservice"},"doc://SwiftKit/documentation/SwiftKit/ApiRoute":{"role":"symbol","title":"ApiRoute","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"kind":"identifier","text":"ApiRoute"}],"abstract":[{"type":"text","text":"This protocol represents an external api route, e.g. "},{"type":"codeVoice","code":"login"},{"type":"text","text":" "},{"type":"text","text":"or "},{"type":"codeVoice","code":"user"},{"type":"text","text":". Each route is a separate action that defines all"},{"type":"text","text":" "},{"type":"text","text":"information required to perform an api request."}],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/ApiRoute","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ApiRoute"}],"url":"\/documentation\/swiftkit\/apiroute"},"doc://SwiftKit/documentation/SwiftKit/IoCContainer":{"deprecated":true,"role":"symbol","title":"IoCContainer","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"kind":"identifier","text":"IoCContainer"}],"abstract":[{"type":"text","text":"This protocol can be implemented by classes that can handle"},{"type":"text","text":" "},{"type":"text","text":"inversion of control, by dynamically resolving types, given"},{"type":"text","text":" "},{"type":"text","text":"any required arguments."}],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/IoCContainer","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"IoCContainer"}],"url":"\/documentation\/swiftkit\/ioccontainer"},"doc://SwiftKit/documentation/SwiftKit/KeychainAttrRepresentable":{"role":"symbol","title":"KeychainAttrRepresentable","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"kind":"identifier","text":"KeychainAttrRepresentable"}],"abstract":[],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/KeychainAttrRepresentable","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"KeychainAttrRepresentable"}],"url":"\/documentation\/swiftkit\/keychainattrrepresentable"},"doc://SwiftKit/documentation/SwiftKit/iCloudDocumentSync":{"role":"symbol","title":"iCloudDocumentSync","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"kind":"identifier","text":"iCloudDocumentSync"}],"abstract":[{"type":"text","text":"This protocol can be implemented by any classes that can be"},{"type":"text","text":" "},{"type":"text","text":"used to sync iCloud document changes."}],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/iCloudDocumentSync","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"iCloudDocumentSync"}],"url":"\/documentation\/swiftkit\/iclouddocumentsync"},"doc://SwiftKit/documentation/SwiftKit/LocalizationNotification":{"role":"symbol","title":"LocalizationNotification","fragments":[{"kind":"keyword","text":"enum"},{"kind":"text","text":" "},{"kind":"identifier","text":"LocalizationNotification"}],"abstract":[{"type":"text","text":"This enum has localization-specific notifications."}],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/LocalizationNotification","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"LocalizationNotification"}],"url":"\/documentation\/swiftkit\/localizationnotification"},"doc://SwiftKit/documentation/SwiftKit/StringDecoder":{"role":"symbol","title":"StringDecoder","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"kind":"identifier","text":"StringDecoder"}],"abstract":[{"type":"text","text":"This protocol can be implemented by classes that can decode"},{"type":"text","text":" "},{"type":"text","text":"strings."}],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/StringDecoder","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"StringDecoder"}],"url":"\/documentation\/swiftkit\/stringdecoder"},"doc://SwiftKit/documentation/SwiftKit/PreferredClosestValue":{"role":"symbol","title":"PreferredClosestValue","fragments":[{"kind":"keyword","text":"enum"},{"kind":"text","text":" "},{"kind":"identifier","text":"PreferredClosestValue"}],"abstract":[],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/PreferredClosestValue","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"PreferredClosestValue"}],"url":"\/documentation\/swiftkit\/preferredclosestvalue"},"doc://SwiftKit/documentation/SwiftKit/CachedAuthenticationService":{"role":"symbol","title":"CachedAuthenticationService","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"kind":"identifier","text":"CachedAuthenticationService"}],"abstract":[{"type":"text","text":"This protocol can be implemented by any classes that can be"},{"type":"text","text":" "},{"type":"text","text":"used to authenticate the user and cache the result to avoid"},{"type":"text","text":" "},{"type":"text","text":"having to perform a real authentication if a successful one"},{"type":"text","text":" "},{"type":"text","text":"has already been performed."}],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/CachedAuthenticationService","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"CachedAuthenticationService"}],"url":"\/documentation\/swiftkit\/cachedauthenticationservice"},"doc://SwiftKit/documentation/SwiftKit/ApiCompletion":{"role":"symbol","title":"ApiCompletion","fragments":[{"kind":"keyword","text":"typealias"},{"kind":"text","text":" "},{"kind":"identifier","text":"ApiCompletion"}],"abstract":[{"type":"text","text":"This completion type is used by the "},{"type":"codeVoice","code":"ApiService"},{"type":"text","text":" protocol."}],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/ApiCompletion","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ApiCompletion"}],"url":"\/documentation\/swiftkit\/apicompletion"},"doc://SwiftKit/documentation/SwiftKit/UserDefaultsBasedDeviceIdentifier":{"role":"symbol","title":"UserDefaultsBasedDeviceIdentifier","fragments":[{"kind":"keyword","text":"class"},{"kind":"text","text":" "},{"kind":"identifier","text":"UserDefaultsBasedDeviceIdentifier"}],"abstract":[{"type":"text","text":"This device identifier generates a unique device identifier"},{"type":"text","text":" "},{"type":"text","text":"and stores it in user defaults, so that the same identifier"},{"type":"text","text":" "},{"type":"text","text":"is used every time for each app installation."}],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/UserDefaultsBasedDeviceIdentifier","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"UserDefaultsBasedDeviceIdentifier"}],"url":"\/documentation\/swiftkit\/userdefaultsbaseddeviceidentifier"},"doc://SwiftKit/documentation/SwiftKit/StandardDirectoryService":{"role":"symbol","title":"StandardDirectoryService","fragments":[{"kind":"keyword","text":"class"},{"kind":"text","text":" "},{"kind":"identifier","text":"StandardDirectoryService"}],"abstract":[{"type":"text","text":"This is a standard implementation of the "},{"type":"codeVoice","code":"DirectoryService"},{"type":"text","text":"."},{"type":"text","text":" "},{"type":"text","text":"You can inherit and override any parts of it."}],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/StandardDirectoryService","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"StandardDirectoryService"}],"url":"\/documentation\/swiftkit\/standarddirectoryservice"},"doc://SwiftKit/documentation/SwiftKit/ApiError":{"role":"symbol","title":"ApiError","fragments":[{"kind":"keyword","text":"enum"},{"kind":"text","text":" "},{"kind":"identifier","text":"ApiError"}],"abstract":[{"type":"text","text":"This enum contains errors that can occur when communicating"},{"type":"text","text":" "},{"type":"text","text":"with an api, using an "},{"type":"codeVoice","code":"ApiService"},{"type":"text","text":"."}],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/ApiError","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ApiError"}],"url":"\/documentation\/swiftkit\/apierror"},"doc://SwiftKit/documentation/SwiftKit/Validator":{"role":"symbol","title":"Validator","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"kind":"identifier","text":"Validator"}],"abstract":[],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/Validator","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"Validator"}],"url":"\/documentation\/swiftkit\/validator"},"doc://SwiftKit/documentation/SwiftKit/DeviceIdentifier":{"role":"symbol","title":"DeviceIdentifier","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"kind":"identifier","text":"DeviceIdentifier"}],"abstract":[{"type":"text","text":"This protocol can be implemented by anything that can get a"},{"type":"text","text":" "},{"type":"text","text":"unique device identifier for the current device."}],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/DeviceIdentifier","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"DeviceIdentifier"}],"url":"\/documentation\/swiftkit\/deviceidentifier"},"doc://SwiftKit/documentation/SwiftKit/LocalizationService":{"role":"symbol","title":"LocalizationService","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"kind":"identifier","text":"LocalizationService"}],"abstract":[{"type":"text","text":"This protocol can be implemented any "},{"type":"reference","isActive":true,"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/Translator"},{"type":"text","text":" that is"},{"type":"text","text":" "},{"type":"text","text":"also capable of changing the app’s current locale."}],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/LocalizationService","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"LocalizationService"}],"url":"\/documentation\/swiftkit\/localizationservice"},"doc://SwiftKit/documentation/SwiftKit/BundleFileFinder":{"role":"symbol","title":"BundleFileFinder","fragments":[{"kind":"keyword","text":"class"},{"kind":"text","text":" "},{"kind":"identifier","text":"BundleFileFinder"}],"abstract":[{"type":"text","text":"This class can be used to find files witin a certain bundle."}],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/BundleFileFinder","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"BundleFileFinder"}],"url":"\/documentation\/swiftkit\/bundlefilefinder"},"doc://SwiftKit/documentation/SwiftKit/Translator":{"role":"symbol","title":"Translator","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"kind":"identifier","text":"Translator"}],"abstract":[{"type":"text","text":"This protocol can be implemented by any classes that can be"},{"type":"text","text":" "},{"type":"text","text":"used to translate a localized string synchronously."}],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/Translator","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"Translator"}],"url":"\/documentation\/swiftkit\/translator"},"doc://SwiftKit/documentation/SwiftKit/StoreService":{"deprecated":true,"role":"symbol","title":"StoreService","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"kind":"identifier","text":"StoreService"}],"abstract":[],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/StoreService","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"StoreService"}],"url":"\/documentation\/swiftkit\/storeservice"},"doc://SwiftKit/documentation/SwiftKit/AppleMapsService":{"role":"symbol","title":"AppleMapsService","fragments":[{"kind":"keyword","text":"class"},{"kind":"text","text":" "},{"kind":"identifier","text":"AppleMapsService"}],"abstract":[],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/AppleMapsService","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"AppleMapsService"}],"url":"\/documentation\/swiftkit\/applemapsservice"},"doc://SwiftKit/documentation/SwiftKit/StandardStoreService":{"deprecated":true,"role":"symbol","title":"StandardStoreService","fragments":[{"kind":"keyword","text":"class"},{"kind":"text","text":" "},{"kind":"identifier","text":"StandardStoreService"}],"abstract":[],"identifier":"doc:\/\/SwiftKit\/documentation\/SwiftKit\/StandardStoreService","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"StandardStoreService"}],"url":"\/documentation\/swiftkit\/standardstoreservice"}}} |