我正在尝试使用泛型来实现Base类中的请求/响应,以便派生类不必担心gory实现细节。
class mNoxHttpClient {
var apiUrl : String = ""
var operation : Int = -1
var postData : AnyObject
var responseData : AnyClass
init (apiUrl:String, operation:Int, postData:AnyObject) {
self.apiUrl = apiUrl
self.operation = operation
self.postData = postData
}
func doInBackground() {
let fullURL = God.getFullURL(apiURL: self.apiUrl)
Alamofire.request(fullURL, method: .post).responseObject { (response: DataResponse<AnyClass>) -> ()
if (response != nil && response.result != nil && response.result.value != nil) {
responseData = (response.result.value)
}
}
}
func doAfterBackgroundCompletes() {
assert(false, "This method must be overriden by the subclass")
}
func execute() {
DispatchQueue.global(qos: .background).async {
self.doInBackground()
DispatchQueue.main.async {
self.doAfterBackgroundCompletes()
}
}
}
}
我需要让我的方法doInBackground
在后台运行。在此之前,我试图让Alamofire
发送请求并将响应返回给Mappable对象,以便我可以稍后在派生类中输入转换响应。
截至目前,这条线路给我一个错误
Alamofire.request(fullURL, method: .post).responseObject { _ in (response: DataResponse<Mappable>) -> ()
错误
无法将“DataRequest”类型的值转换为闭包结果类型“AnyClass”又名()
修改
我稍微修改了我的代码
Alamofire.request(fullURL).responseObject { (response: DataResponse<AnyClass>) in
responseData = response.result.value
}
现在我收到错误
可选类型'AnyClass?'的值无法解开,你的意思是用'!'要么 '?' ?