您好我正在尝试在没有kSecAttrAccountValue属性且仅使用kSecAttrServiceValue的情况下查询我的项目的keychain。这可能吗?状态为0然而,响应为零。我尝试添加一个帐户,效果很好!但是,我的目标是在没有它的情况下获得结果,或者将所有结果存储在同一服务中。请让我知道,谢谢!
参考: Save and Load from KeyChain | Swift
代码:
let keychainQuery: NSMutableDictionary = NSMutableDictionary(objects: [kSecClassGenericPasswordValue, service, kCFBooleanTrue, kSecMatchLimitOneValue], forKeys: [kSecClassValue, kSecAttrServiceValue, kSecReturnDataValue, kSecMatchLimitValue])
var dataTypeRef :AnyObject?
// Search for the keychain items
let status: OSStatus = SecItemCopyMatching(keychainQuery, &dataTypeRef)
var contentsOfKeychain: String?
if status == errSecSuccess {
if let retrievedData = dataTypeRef as? Data {
contentsOfKeychain = String(data: retrievedData, encoding: String.Encoding.utf8)
}
} else {
print("Nothing was retrieved from the keychain. Status code \(status)")
}
return contentsOfKeychain
答案 0 :(得分:1)
KeychainAccess使用钥匙串更加简单:
// Create keychain object
let keychain = Keychain(service: "com.company.AppName")
// Store value in keychain
keychain["password"] = "test"
// Retrieve value from keychain
let password = keychain["password"]