【发布时间】:2018-09-18 19:41:24
【问题描述】:
对于测试,我创建了一个模拟类,它包装了 Security 框架函数。除了 我试图伪造 SecItemCopyMatching(_:_:) 之外,一切正常。完整的签名是:
func SecItemCopyMatching(_ query: CFDictionary, _ result: UnsafeMutablePointer<CFTypeRef?>?) -> OSStatus
我不想使用Security 框架的SecItemCopyMatching(_:_:),而是实现一个具有相同签名的虚拟对象,以便我自己进行测试。
以下sn-p来自the official documentation关于如何处理函数结果。我不知道如何通过UnsafeMutablePointer 以相同的方式呈现虚拟字典。我无法为指针分配任何内容,并且对 UnsafeMutablePointer<CFTypeRef?>? 感到困惑 - 这是指向指针的指针吗?
guard let existingItem = item as? [String : Any],
let passwordData = existingItem[kSecValueData as String] as? Data,
let password = String(data: passwordData, encoding: String.Encoding.utf8),
let username = existingItem[kSecAttrAccount as String] as? String
else {
throw KeychainError.unexpectedPasswordData
}
【问题讨论】:
标签: ios swift xcode foundation