A sane way to work with the iOS Keychain in Swift.
Install the framework ([reference](https://github.com/Alamofire/Alamofire#installation for reference)).
Note: Due to a bug in Swift, the Swift Compiler - Code Generation Optimization Level for release builds has to be set to -Onone. Go here for more infromation on how to change it.
Save Data
Locksmith.saveData(["some key": "some value"], forKey: key, inService: service, forUserAccount: userAccount)Load Data
let (dictionary, error) = Locksmith.loadData(forKey: key, inService: service, forUserAccount: userAccount)Update Data
Locksmith.updateData(["some key": "another value"], forKey: key, inService: service, forUserAccount: userAccount)Delete Data
Locksmith.deleteData(forKey: key, inService: service, forUserAccount: userAccount)To create custom keychain requests, you first have to instantiate a LocksmithRequest. This request can be customised as much as required. Then callLocksmith.performRequest on that request.
let saveRequest = LocksmithRequest(service: service, userAccount: userAccount, key: key, data: ["some key": "some value"])
Locksmith.performRequest(saveRequest)let readRequest = LocksmithRequest(service: service, userAccount: userAccount, key: key)
let (dictionary, error) = Locksmith.performRequest(readRequest)let deleteRequest = LocksmithRequest(service: service, userAccount: userAccount, key: key, requestType: .Delete)
Locksmith.performRequest(deleteRequest)More to come.
var service: String
var key: String
var userAccount: String
var type: RequestType // Defaults to .Readvar group: String? // Used for keychain sharing
var data: NSDictionary? // Used only for write requests
var matchLimit: MatchLimit // Defaults to .One