- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我在尝试将我在 Apple 文档中找到的代码转换为 swift 代码时遇到了一些麻烦。准确的说是关于TSL和证书的东西……
这是Objective-C中的原始代码
SecTrustResultType secresult = kSecTrustResultInvalid;
if (SecTrustEvaluate(trust, &secresult) != errSecSuccess)
return;
}
这是我的尝试...
var secresult:SecTrustResultType = kSecTrustResultInvalid // ERROR 1
if (SecTrustEvaluate(trust, &secresult) != errSecSuccess) { // ERROR 2
return;
}
错误 1 是:
'Int' is not convertible to 'SecTrustResultType'
错误 2 是:
Could not find an overload for '!=' that accepts the supplied arguments
现在,我看到了 SecTrustResultType
是 UInt32
和 kSecTrustResultInvalid
是一个 Int
...但是这个 header 是由 Apple 定义的,所以我认为它应该是正确的:P
typealias SecTrustResultType = UInt32
var kSecTrustResultInvalid: Int { get }
关于第二个错误,我真的不知道如何处理它,因为函数 SecTrustEvaluate
返回 OSStatus
(这是 UInt32
的别名)和 errSecSuccess
是 OSStatus
也。
我真的很困惑。你有什么建议让这些东西起作用吗?
最佳答案
我自己遇到了这个问题,头文档有点困惑,尤其是因为常量被定义为 Int
并且 SecTrustResultType 被定义为 UInt32
。
但好消息是,解决方案相当简单,只需使用 kSecTrustResultInvalid
初始化 SecTrustResultType
:
var secresult = SecTrustResultType(kSecTrustResultInvalid)
if (SecTrustEvaluate(serverTrust, &secresult) != errSecSuccess){
return;
}
关于ios - Swift 和 SecTrust,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29940431/
我在尝试将我在 Apple 文档中找到的代码转换为 swift 代码时遇到了一些麻烦。准确的说是关于TSL和证书的东西…… https://developer.apple.com/library/ma
我是一名优秀的程序员,十分优秀!