メモ:decodeエラーした際にエラー内容をprint

これまでJSONオブジェクトをdecodeする際にtry? を使っていたが、それだとエラー内容をキャッチできない。

if let object = try? JSONDecoder().decode(T.self, from: replacedData) {
    DispatchQueue.main.async {
        completionHandler(.success((response, object)))
    }
    return
} else {
    DispatchQueue.main.async {
        completionHandler(.failure(NetworkRequest.RequestError.otherError))
    }
}

これはDo-catch文を使うことで、エラー内容を表示できる。

do {
    let object = try JSONDecoder().decode(T.self, from: data)
    DispatchQueue.main.async {
        completionHandler(.success((response, object)))
    }
    return
} catch let jsonError as NSError {
    print("JSON decode failed: \(jsonError.localizedDescription)")
}

コメント

タイトルとURLをコピーしました