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 版本中,ServerTrustPolicySessionManager 不再存在。你可以试试下面新引入的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,使用未声明的类型的主要内容,如果未能解决你的问题,请参考以下文章

Alamofire v4 使用未声明的类型响应

Response<AnyObject, NSError> 在 Alamofire4/Swift3 中未声明的类型

使用未声明的类型“JSONDictionary”

请求 Alamofire

AlamoFire 图像内存问题

发送 Alamofire JSON 数组 Swift