Alamofire,使用未声明的类型
Posted
技术标签:
【中文标题】Alamofire,使用未声明的类型【英文标题】:Alamofire, Use of undeclared types 【发布时间】:2019-10-13 12:37:13 【问题描述】:我正在使用 Alamofire 进行 SSL 固定。 为此,我使用以下代码:
import Foundation
import Alamofire
import SwiftyJSON
class CertificateManager
init()
let serverTrustPolicies: [String: ServerTrustPolicy] = [
"test.example.com": .pinCertificates(
certificates: ServerTrustPolicy.certificates(),
validateCertificateChain: true,
validateHost: true
),
"insecure.expired-apis.com": .disableEvaluation
]
let sessionManager = SessionManager(
serverTrustPolicyManager: ServerTrustPolicyManager(policies: serverTrustPolicies)
)
但是发生了这些错误:
我的 pod 文件是:pod 'Alamofire', '~> 5.0.0-rc.2'
。
我搜索并测试了一些解决方案,但无法解决错误。我该如何解决这个问题?
我也试过这个答案。 +
【问题讨论】:
你做了import Alamofire
吗?
是的,我导入了这些import Foundation import Alamofire import SwiftyJSON
清理并重建项目,你试过了吗?
@JoakimDanielson 是的,我试过了。清理、构建、擦除 DeivenData。
Alamofire v5 有新的 API,但他们还没有创建迁移指南,因为它仍然是一个候选版本。您可以在this ticket 中阅读更多相关信息。另请参阅下面的Kamran 的answer
【参考方案1】:
在您使用的Alamofire
版本中,ServerTrustPolicy
和SessionManager
不再存在。你可以试试下面新引入的api,
let pinEvaluator = PinnedCertificatesTrustEvaluator(certificates: Bundle.main.af.certificates,
acceptSelfSignedCertificates: true,
performDefaultValidation: true,
validateHost: true)
let disableEvaluator = DisabledEvaluator()
let trustManager = ServerTrustManager.init(evaluators:
["test.example.com": pinEvaluator,
"insecure.expired-apis.com": disableEvaluator
])
let sessionManager = Session.init(configuration: .default, serverTrustManager: trustManager)
【讨论】:
pinEvaluator和disableEvaluator有什么用? @AiraSamson 要加密您的数据以进行安全传输,您可以使用证书固定 (pinEvaluator
)。如果某些主机被禁用以进行评估,那么您将使用 DisabledEvaluator
【参考方案2】:
作为@Kamran 的帖子。
Alamofire 5.0
,所有api都有big change
【讨论】:
以上是关于Alamofire,使用未声明的类型的主要内容,如果未能解决你的问题,请参考以下文章