一个 Swift 写的 Keychain 访问封装库,因为世界需要更多这样的库
目前使用于
详细文档可以在这里找到
KeyVine 的目标是成为一个简单且可高度复用的 Keychain 访问封装库,用于 Apple 平台上的 Swift 应用。
市面上已经有很多功能完备且更成熟的同类库,但在我的项目中,我一直觉得需要一种超简单的方式来创建几个“Keychain 属性”,并以最少的麻烦和最常见的默认设置来访问它们。KeyVine 正是做这件事的。
用应用程序标识符和团队 ID 初始化它。
有多种使用方式
读取和写入简单的 Data
块
let keyVine = KeyVine(appIdentifier: "com.myApp.identifier", teamId: "ABC1234567")
let storedData = try keyVine.read(fro,: "name_for_my_data")
let myText = String(data: storedData, encoding: .utf8)
print(myText)
let myData = try Data(contentsOf: ...)
try keyVine.write(myData, to: "name_for_my_data")
使用下标运算符
let keyVine = KeyVine(appIdentifier: "com.myApp.identifier", teamId: "ABC1234567")
let storedData = keyVine["name_for_my_data"]
let myText = String(data: storedData, encoding: .utf8)
print(myText)
let myData = try Data(contentsOf: ...)
keyVine["name_for_my_data"] = myData
使用属性包装器
@KeyVine.Property(key: "name_for_my_data", appIdentifier: "com.myApp.identifier", teamId: "ABC1234567")
var storedData: Data?
if let storedData {
let myText = String(data: storedData, encoding: .utf8)
print(myText)
}
KeyVine 已经支持 String
, Date
, Bool
, Int
, Float
和 Double
,但你也可以让任何类型遵循 KeyVineDataConvertible
协议。
如果类型已经遵循了 LosslessStringConvertible
协议,你可以直接添加 KeyVineStringConvertible
协议,而无需创建额外的序列化代码。
extension MyInfo: KeyVineDataConvertible {
init?(keyVineData: Data?) {
... // initialise from data
}
var asKeyVineData: Data? {
let data = ... // Serialise to data
return data
}
}
使用下标运算符
let keyVine = KeyVine(appIdentifier: "com.myApp.identifier", teamId: "ABC1234567")
let myInfo: MyInfo = keyVine["my_info_key"]
...
keyVine["my_info_key"] = myInfo
使用属性包装器
为非可选属性提供默认值
@KeyVine.Property(key: "my_info_key", appIdentifier: "com.myApp.identifier", teamId: "ABC1234567", defaultValue: "Hello world!")
var greeting: String
print(greeting) // 'Hello world!'
或者不提供
@KeyVine.OptionalProperty(key: "my_info_key", appIdentifier: "com.myApp.identifier", teamId: "ABC1234567")
var storedInfo: MyInfo?
if let storedInfo {
doStuff(with: storedInfo)
}
...
storedInfo = MyInfo()
版权所有 (c) 2023 Paul Tsochantaris。根据 MIT 许可证授权,详情请参见 LICENSE 文件。