从“数据?”到不相关的类型 '[String : Any]' 总是失败

Posted

技术标签:

【中文标题】从“数据?”到不相关的类型 \'[String : Any]\' 总是失败【英文标题】:Cast from 'Data?' to unrelated type '[String : Any]' always fails从“数据?”到不相关的类型 '[String : Any]' 总是失败 【发布时间】:2018-09-19 10:39:00 【问题描述】:

从“数据?”投射到不相关的类型 '[String : Any]' 总是失败

在这里,我正在尝试从 Api 获取响应并第一次使用 alamofire,但我得到了警告,请帮帮我

guard let json = response.result.value as? [String: Any] else 
    print("Didn't get todo object as JSON from API")
    if let error = response.result.error 
        print("Error: \(error)")
    
    return

如果有的话我应该改变什么,请帮忙。

【问题讨论】:

【参考方案1】:

你必须做的改变是上面一行。

你必须告诉请求得到反序列化的响应而不是原始的Data

Alamofire.request( [...] ).responseJSON 

【讨论】:

请详细描述一下,我是 swift 和 alamofire 的新手,还有一件事我使用过 responseData Alamofire.request(todosEndpoint, method: .post, parameters: newTodo, encoding: URLEncoding.default ,headers:nil) .responseData response in guard response.result.error == nil else // 获取数据出错,需要处理 print("error calling POST on /todos/1") print( response.result.error!) 返回 只需将responseData 替换为responseJSON 这样做了,但是在执行程序时我收到以下错误:-- responseSerializationFailed(Alamofire.AFError.ResponseSerializationFailureReason.inputDataNilOrZeroLength) at 'guard response.result.error == nil' 让 todosEndpoint: String = "abcdefg?" let newTodo: [String: Any] = ["ss": "M","ddd":"A","hhhh":"cc","vvvv":604808,"nnnb":524] Alamofire.request( todosEndpoint, 方法: .post, 参数: newTodo, 编码: URLEncoding.default,headers:nil) .responseJSON 响应中的响应 response.result.error == nil else print("error calling POST on /todos/1")打印(response.result.error!)返回 请建议我如何解决这个问题【参考方案2】:

如果你的response.result.value是JSON数据,你可以这样获取:

guard let jsonData = response.result.value 
    let responseObj = try? JSONSerialization.jsonObject(with: jsonData, options: [])
    if let response = responseObj as? [String: Any]  print(response) 

【讨论】:

以上是关于从“数据?”到不相关的类型 '[String : Any]' 总是失败的主要内容,如果未能解决你的问题,请参考以下文章

Firebase swift runTransactionBlock:从“MutableData?”转换到不相关的类型“字符串”总是失败

对“const int *”类型的非 const 左值引用不能绑定到不相关类型“int *”的值

IO相关3(string流)

为啥我会收到“从 '[String]' 转换为不相关的类型 'String' 总是失败”错误?

pytorch-geometric 从入门到不放弃 day3

如何通过 Angular 6 中的服务将对象发送到不相关的组件?