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