Swift 3.0:数据到JSON [String:Any]

And*_*tto 13 networking json nsdata swift

晚上,我正在尝试创建一个APIClient,但是我遇到了一个警告问题: APIClient.swift:53:81: Cast from 'Data' to unrelated type '[String : Any]' always fails

在这段代码中,我试图将Data转换为JSON作为字典[String : Any].

我猜编译器无法知道这个演员是否可能,所以它会抛出错误,但我很确定它会起作用.那么我该如何避免这种警告或者如何编写更安全的代码呢?

case 200:
         do {
            let json = try JSONSerialization.data(withJSONObject: data!, options: []) as? [String : Any]
            completion(json, HTTPResponse, nil)
         } catch let error {
             completion(nil, HTTPResponse, error)
         }
Run Code Online (Sandbox Code Playgroud)

And*_*tto 36

正确的方法是:

let json = try JSONSerialization.jsonObject(with: data!, options: []) as? [String : Any]
Run Code Online (Sandbox Code Playgroud)

感谢Eric Aya

  • 没有 "?" 在尝试之后,编译器可能会抛出错误,说"从此处抛出的错误未被处理" (4认同)
  • 在 `do{ <this_code> }catch{ print("erroMsg") }` 中添加此行 (2认同)