无法将类型 'Response<AnyObject, NSError>' 的值转换为闭包结果类型 'NSDictionary'
Cannot convert value of type 'Response<AnyObject, NSError>' to closure result type 'NSDictionary'
class AlamofireService {
static let alamofireService = AlamofireService()
private init() {
}
internal func makePostServiceRequest(url: String, parameters: AnyObject, completion: (inner: () throws -> NSDictionary) -> Void) -> Void{
Alamofire.request(.POST, URL_BASE, parameters: [IOS_PARAMS : parameters], encoding:.JSON).validate()
.responseJSON
{
response in switch response.result
{
case .Success(let JSON):
print("Success with JSON: \(JSON)")
let response = JSON as! NSDictionary
print(response)
completion(inner: { return response })
case .Failure(let error):
print("Request failed with error: \(error)")
completion(inner: { throw error })
}
}
}
internal func makeGetServiceRequestTemplates(completion: (inner: () throws -> NSDictionary) -> Void) ->Void {
Alamofire.request(.GET, URl_TEMPLATES).validate().responseJSON
{
response in switch response.result
{
case .Success(let JSON):
print("Success with JSON: \(JSON)")
if let array = JSON as? [Dictionary<String, AnyObject>] {
for var i=0; i < array.count; i++ {
let templates = Mapper<VQuizTemplateTo>().map(array[i])
print(templates)
}
}
completion(inner: { return response }) //error is on this line
case .Failure(let error):
print("Request failed with error: \(error)")
completion(inner: { throw error })
}
}
}
两个相同的方法,第一个没有错误,第二个和我标记的一样。无法弄清楚出了什么问题,尤其是这个无意义的错误。
你能告诉我我做错了什么吗?
您返回的 response
类型为 Response<AnyObject, NSError>
,这就是您收到该错误的原因..
尝试返回这个 response.result.value as! NSDictionary
只需将 completion(inner: { return response })
替换为
completion(inner: { return response.result.value as! NSDictionary })
class AlamofireService {
static let alamofireService = AlamofireService()
private init() {
}
internal func makePostServiceRequest(url: String, parameters: AnyObject, completion: (inner: () throws -> NSDictionary) -> Void) -> Void{
Alamofire.request(.POST, URL_BASE, parameters: [IOS_PARAMS : parameters], encoding:.JSON).validate()
.responseJSON
{
response in switch response.result
{
case .Success(let JSON):
print("Success with JSON: \(JSON)")
let response = JSON as! NSDictionary
print(response)
completion(inner: { return response })
case .Failure(let error):
print("Request failed with error: \(error)")
completion(inner: { throw error })
}
}
}
internal func makeGetServiceRequestTemplates(completion: (inner: () throws -> NSDictionary) -> Void) ->Void {
Alamofire.request(.GET, URl_TEMPLATES).validate().responseJSON
{
response in switch response.result
{
case .Success(let JSON):
print("Success with JSON: \(JSON)")
if let array = JSON as? [Dictionary<String, AnyObject>] {
for var i=0; i < array.count; i++ {
let templates = Mapper<VQuizTemplateTo>().map(array[i])
print(templates)
}
}
completion(inner: { return response }) //error is on this line
case .Failure(let error):
print("Request failed with error: \(error)")
completion(inner: { throw error })
}
}
}
两个相同的方法,第一个没有错误,第二个和我标记的一样。无法弄清楚出了什么问题,尤其是这个无意义的错误。 你能告诉我我做错了什么吗?
您返回的 response
类型为 Response<AnyObject, NSError>
,这就是您收到该错误的原因..
尝试返回这个 response.result.value as! NSDictionary
只需将 completion(inner: { return response })
替换为
completion(inner: { return response.result.value as! NSDictionary })