KeychainWrapper
一个类型安全、易于使用的Keychain包装器,可以存储任何Codable
类型的对象。
基本使用
首先,设置您的对象...
struct TokenObject: Codable {
let fullToken: String
}
extension Keychain {
static var `default`: Keychain {
return Keychain(keychainAccessGroup: "my.keychain.access.group")
}
}
extension Keychain.Key {
static var authToken: Keychain.Key<TokenObject> {
return Keychain.Key<TokenObject>(rawValue: "auth.token.key", synchronize: true)
}
}
然后,开始使用吧!
// Store
Keychain.default[.authToken] = TokenObject(fullToken: "sample.token")
// Retrieve
let fullToken = Keychain.default[.authToken]?.fullToken
// Delete
Keychain.default[.authToken] = nil
或者,直接在接口中进行操作并实现一些错误处理!
// Store
let token = TokenObject(fullToken: "sample.token")
switch Keychain.default.storeObject(token, forKey: .authToken) {
case .success:
print("Woohoo!")
case .error(let error):
print("Bummer! \(error.description)"
}
// Retrieve
switch Keychain.default.retrieveObject(forKey: .authToken) {
case .success(let object):
print("Woohoo! Token: \(object.fullToken)")
case .error(let error):
print("Bummer! \(error.description)")
}
// Delete
switch Keychain.default.deleteObject(forKey: .authToken) {
case .success:
print("Woohoo!")
case .error(let error):
print("Bummer! \(error.description")
}