A sane way to work with the iOS Keychain in Swift.
Grab two files from the project: Locksmith.swift and LocksmithRequest.swift.
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)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