TinyKeychain
一个Swift语言的,类型安全且易于使用的密钥链包装器,可以存储任何可以被编码的对象(Codable
)。
使用方法
首先,设置好您的对象。
TinyKeychain旨在存储对象,这些对象必须是编码过的(如这个例子所示)
struct MyToken: Codable {
let fullToken: String
}
创建一个Keychain
实例。由于Keychain
实例不持有可变状态,因此我们建议您在Keychain
上创建静态属性实例,以便可以使用Swift的句点语法访问它们,如下所示
extension Keychain {
static let `default` = Keychain(group: "my.keychain.access.group")
}
将对象存储到密钥链或从密钥链中检索对象的唯一方法是通过使用Keychain.Key
对象。这些对象与Codable
对象类型相关联,并且也不持有可变状态。我们建议您同样通过点语法使其可访问
extension Keychain.Key {
static var authToken: Keychain.Key<MyToken> {
return Keychain.Key<MyToken>(rawValue: "auth.token.key", synchronize: true)
}
}
一旦您有一个Keychain
实例和一个用于查询的Key
,就可以开始使用了。Keychain
实例可以像这样使用索引器
// Store
Keychain.default[.authToken] = MyToken(fullToken: "sample.token")
// Retrieve
let fullToken = Keychain.default[.authToken]?.fullToken
// Delete
Keychain.default[.authToken] = nil
或者,您可以使用完整的API,并实现一些错误处理
// Store
let token = MyToken(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)")
}
获取TinyKeychain!
CocoaPods
pod 'TinyKeychain'
Carthage
github 'smolster/TinyKeychain'