SwiftKeychain 1.0.0

SwiftKeychain 1.0.0

测试已测试
语言语言 SwiftSwift
许可 MIT
发布上次发布2016年2月
SPM支持SPM

Yanko Dimitrov维护。



SwiftKeychain

摘要

使用面向协议编程实现的Keychain API的Swift包装器。

您创建一个实现KeychainGenericPasswordType协议的实现,它封装了您想要在Keychain中存储的数据。大部分实现都是通过使用默认协议实现完成的,例如设置默认的服务名称和访问模式(kSecAttrAccessibleWhenUnlocked)。

然后您通过调用KeychainItemType方法保存、删除或从提供的作为参数的KeychainServiceType协议实现中获取项目。

SwiftKeychain Protocols

假设我们要在Keychain中存储Instagram账户的访问令牌和用户名

struct InstagramAccount: KeychainGenericPasswordType {

    let accountName: String
    let token: String
    var data = [String: AnyObject]()

    var dataToStore: [String: AnyObject] {
        return ["token": token]
    }

    var accessToken: String? {
        return data["token"] as? String
    }

    init(name: String, accessToken: String = "") {
        accountName = name
        token = accessToken
    }
}

var dataToStore: [String: AnyObject]中返回您想要保存在Keychain中的Dictionary,当从Keychain中获取项目时,其数据将填充到您的var data: [String: AnyObject]属性中。

保存项目

let newAccount = InstagramAccount(name: "John", accessToken: "123456")

do {

    try newAccount.saveInKeychain()

} catch {

    print(error)
}

注意:提供的KeychainServiceType协议实现将替换Keychain数据库中已经存在的项目。

删除项目

let account = InstagramAccount(name: "John")

do {

    try account.removeFromKeychain()

} catch {

    print(error)
}

获取项目

var account = InstagramAccount(name: "John")

do {

    try account.fetchFromKeychain()

    if let token = account.accessToken {

        print("name: \(account.accountName), token: \(token)")
    }

} catch {

    print(error)
}

安装

SwiftKeychain需要Swift 2.0和XCode 7,并支持iOS、OSX、watchOS和tvOS。

手动

Keychain/Keychain.swift文件复制到您的项目中。

许可

SwiftKeychain是在MIT许可证下发布的,有关更多信息,请参阅LICENSE.txt文件。