0
我有一類叫做APIManager擴展:Alamofire:無法調用非函數類型'NSHTTPURLResponse'的值
import Alamofire
import Foundation
// MARK: - Logout
extension APIManager {
public func performLogout() {
let request = defaultManager.request(APIManager.Router.Logout.URLRequest)
request.response(// ERROR ON THIS LINE AS NOTED BELOW
queue: APIManager.responseQueue,
responseSerializer: Request.stringResponseSerializer(),
completionHandler: { [weak self] (response) in
guard let strongSelf = self else { return }
}
)
}
}
當分機包括在同一個文件的APIManager類的下面,有沒有任何問題。
然而,當我拿擴展,並將其移動到一個新的文件,我收到此錯誤:
Cannot call value of non-function type 'NSHTTPURLResponse?'
很明顯,分機時,放置在另一個文件中,編譯器混淆上述方法與在Alamofire Request類
的APIManager類的Alamofire/Request.swift的 '響應' 屬性定義Alamofire/ResponseSerialization.swift低於:
public final class APIManager {
// MARK: - Singleton shared instance
static let sharedInstance = APIManager()
let defaultManager: Alamofire.Manager = {
let serverTrustPolicies: [String: ServerTrustPolicy] = [
"TBD1": .PinCertificates(
certificates: ServerTrustPolicy.certificatesInBundle(),
validateCertificateChain: true,
validateHost: true
),
"TBD2": .DisableEvaluation
]
let configuration = NSURLSessionConfiguration.defaultSessionConfiguration()
configuration.HTTPAdditionalHeaders = Alamofire.Manager.defaultHTTPHeaders
return Alamofire.Manager(
configuration: configuration,
serverTrustPolicyManager: ServerTrustPolicyManager(policies: serverTrustPolicies)
)
}()
}
這裏有一個類似的問題,但它並不完全一樣:
Cannot call value of non-function type 'NSHTTPURLResponse?' Alamofire ObjectMapper
謝謝@Jacob - 我已經驗證了兩種情況都是如此,但問題依然存在。 – etayluz
我還包含了原始的APIManager類。 – etayluz
即使APIManager被標記爲公開,其中的一些結構被標記爲私有。這是問題。 – etayluz