gpt4 book ai didi

ios - 如何通过 `UnsafeMutablePointer?` 参数返回字典?

转载 作者:行者123 更新时间:2023-11-28 07:40:29 25 4
gpt4 key购买 nike

为了测试,我创建了一个模拟类,它包装了 Security框架功能。一切正常,除了我试图伪造 SecItemCopyMatching(_:_:) 。完整的签名是:

func SecItemCopyMatching(_ query: CFDictionary, _ result: UnsafeMutablePointer<CFTypeRef?>?) -> OSStatus

我不想使用 SecItemCopyMatching(_:_:) Security框架,但实现一个具有相同签名的虚拟对象以供我自己测试。

以下片段来自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
}

最佳答案

我找到的可行解决方案:

func SecItemCopyMatching(_ query: CFDictionary, _ result: UnsafeMutablePointer<CFTypeRef?>?) -> OSStatus {
let item: [String: Any] = [
kSecAttrAccount as String: "username",
kSecValueData as String: "password".data(using: String.Encoding.utf8)!
]

result?.pointee = item as AnyObject
return copyMatchingStatus
}

他们需要理解的关键信息:CFTypeRef 直接映射到 AnyObject(参见 Working with Core Foundation Types)。将字典转换为 AnyObject 可以将赋值作为指针对象。

关于ios - 如何通过 `UnsafeMutablePointer<CFTypeRef?>?` 参数返回字典?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52393554/

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