gpt4 book ai didi

ios - SecItemCopyMatching 返回 errSecItemNotFound

转载 作者:行者123 更新时间:2023-11-30 14:00:05 24 4
gpt4 key购买 nike

与 REST API 通信并将 API token 保存在 iOS 的钥匙串(keychain)中。但钥匙串(keychain)代码抛出 nil 错误。

KeychainAccess.swift:

public class func passwordForAccount(account: String, service: String = "keyChainDefaultService") -> String? {
let queryAttributes = NSDictionary(objects: [secClassGenericPassword(), service, account, true], forKeys: [secClass(), secAttrService(), secAttrAccount(), secReturnData()])

var retrievedData: NSData?
var extractedData: AnyObject?
let status = SecItemCopyMatching(queryAttributes, &extractedData)

if (status == errSecSuccess) {
retrievedData = extractedData as? NSData
}
let password = NSString(data: retrievedData!, encoding: NSUTF8StringEncoding)

return (password as! String)
}

在上面的代码中,retrievedData 为零。如果我执行print(status),我会得到-25300。从 View Controller 调用此函数:

// check if API token has expired
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
let userTokenExpiryDate : String? = KeychainAccess.passwordForAccount("Auth_Token_Expiry", service: "KeyChainService")
let dateFromString : NSDate? = dateFormatter.dateFromString(userTokenExpiryDate!)
let now = NSDate()

我不知道我哪里出了问题。有什么指点吗?

最佳答案

    var extractedData : AnyObject?;
let status = withUnsafeMutablePointer(&extractedData) {
SecItemCopyMatching(queryAttributes, UnsafeMutablePointer($0))
}

尝试这样做,这就是我必须让它工作的方式

关于ios - SecItemCopyMatching 返回 errSecItemNotFound,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33092606/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com