当我从服务器获取数据时,它将显示致命错误 在我的代码下面
URLSession.shared.dataTask(with: myRequest, completionHandler: { (data:Data?, response:URLResponse?, error:Error?) -> Void in
DispatchQueue.main.async {
if error != nil {
}
do {
if let json = try JSONSerialization.jsonObject(with: (data)!, options: .mutableContainers) as? NSMutableDictionary {
}
}
}
答案 0 :(得分:1)
let task = URLSession.shared.dataTask(with: request) { (data, response, error) in
do
{
let dict = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers)
Dispatch.main.async {
// refresh ui like tableview[tableView.roloadData()] or collectionview
}
}catch{
}
}
task.resume()
答案 1 :(得分:0)
您的代码中的错误很少。
您正在检查nil的错误并在此检查之外反序列化json。
你是强行展开(!)数据而不检查是否为零。
你使用do,但我看不到捕获。除非你确实需要,否则请不要使用do / catch。
另外,我建议您在已经反序列化对象时使用mainThread。
URLSession.shared.dataTask(with: myRequest) { (data, _, error) -> Void in
guard let data = data else { return }
let dict = try? JSONSerialization.jsonObject(with: data, options: .mutableContainers) {
...
Dispatch.main.async {
// refresh ui
}
}
}