SwiftyKeychainKit 1.0.0-beta.2

SwiftyKeychainKit 1.0.0-beta.2

Andriy Slyusar 维护。



SwiftyKeychainKit 1.0.0-beta.2

SwiftyKeychainKit

Platforms CocoaPods compatible SPM compatible Carthage compatible Swift version

SwiftyKeychainKit 是一个简单的 Swift 包装器,用于 Keychain Services API,具有静态类型化的优点。在同一个位置定义您的键,轻松使用值类型,并免费获得额外的安全性和方便的编译时检查。

特性

  • 静态类型和编译时检查
  • Swift 5 兼容

用法

基本用法

let keychain = Keychain(service: "com.swifty.keychain")
let accessTokenKey = KeychainKey<String>(key: "accessToken")

// Save or modify value
try? keychain.save("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9", for : accessTokenKey)

// Get value 
let value = try keychain.get(accessTokenKey)

// Remove value 
try keychain.remove(accessTokenKey)

// Remove all values 
try keychain.removeAll()

实例化

// Generic password
let keychain = Keychain(service: "com.swifty.keychainkit")

// Internet password
let keychain = Keychain(server: URL(string: "https://www.google.com")!, protocolType: .https)

定义密钥

为了方便使用,通过扩展KeychainKeys类并添加静态属性来定义您的密钥

extension KeychainKeys {
    static let username = KeychainKey<String>(key: "username")
    static let age = KeychainKey<Int>(key: "age")
}

然后,在代码中可以使用快捷的点语法

// save
try? keychain.save("John Snow", for: .username)

// get
let username = try keychain.get(.username)

获取值

您可以使用subscriptsdynamicCallable语法糖来以Result<ValueType, KeychainError>类型获取值

let username = try keychain[.username].get()

// or 

if case .success(let age) = keychain[.age] {
    ...
}
let username = try keychain(.username).get()

// or 

if case .success(let age) = keychain(.age) {
    ...
}

subscriptsdynamicCallable语法仅用于获取值。由于Swift语言的限制,当前不能实现带有错误处理的setter。

默认值

您可以为GET方法提供默认值,如果密钥链密钥为nil,则将使用此值,不会抛出错误。

try keychain.get(.username, default: "Daenerys Targaryen")

// or

try keychain[.age, default: 18].get() 

支持的类型

  • Int
  • String
  • Double
  • Float
  • Bool
  • Data

等等

  • Codable
  • NSCODING

支持属性

通用

  • kSecAttrAccessGroup
  • kSecAttrAccessible
  • kSecAttrDescription
  • kSecAttrComment
  • kSecAttrCreator
  • kSecAttrType
  • kSecAttrLabel
  • kSecAttrIsInvisible
  • kSecAttrIsNegative
  • kSecAttrAccount
  • kSecAttrSynchronizable

通用密码

  • kSecAttrAccessControl
  • kSecAttrService
  • kSecAttrGeneric

互联网密码

  • kSecAttrSecurityDomain
  • kSecAttrServer
  • kSecAttrProtocol
  • kSecAttrAuthenticationType
  • kSecAttrPort
  • kSecAttrPath

支持更多类型

待定

需求

Swift 版本 5.0

平台 可用性
iOS >= 12
macOS -
tvOS -
watchOS -

安装

CocoaPods

pod 'SwiftyKeychainKit', '1.0.0-beta.2'

Swift 包管理器

let package = Package(
    dependencies: [
        .Package(url: "https://github.com/andriyslyusar/SwiftyKeychainKit.git", .exact("1.0.0-beta.2"))
    ]
)

Carthage

github "andriyslyusar/SwiftyKeychainKit" "1.0.0-beta.2"

致谢

作者

Andriy Slyusar

许可

SwiftyKeychainKit遵循MIT许可协议。更多信息请参阅许可文件