-6ren">
gpt4 book ai didi

swift - 通用方法导致 "cannot pass immutable value of type AnyObject? as inout argument"

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

我正在开发 Keychain 包装类的 Swift 版本。我有点困惑为什么会这样:

private func executeFetch(query: KeyStoreObject) throws -> AnyObject? {
var result: AnyObject?
try executeQuery(query) { SecItemCopyMatching(query.data, &result) }
return result
}

这不会:

private func executeFetch<T: AnyObject>(query: KeyStoreObject) throws -> T? {
var result: T?
try executeQuery(query) { SecItemCopyMatching(query.data, &result) }
return result
}

最佳答案

我认为错误在于 SecItemCopyMatching 可能会尝试将 AnyObject 类型的任何内容(即任何内容)分配给 result。但是,在第二个示例中,result 不一定是 AnyObject 类型;它是某种特定类型 T,它是 AnyObject 的子类。因此,SecItemCopyMatching 可能无法正确设置结果。例如,如果 TInt,但 SecItemCopyMatching 想要将 result 设置为 String?当 result 的类型为 AnyObject 时,这不再是问题。

关于swift - 通用方法导致 "cannot pass immutable value of type AnyObject? as inout argument",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37336781/

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