前提・実現したいこと
Any型のオブジェクトをDouble型にキャストしたいのですがうまくいきません。
jsonDataはapiから受け取ったjsonが入っています。
モデルはjsonModelです。
環境
Xcode 10.3
swift 5.0
発生している問題・エラーメッセージ
Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value
該当のソースコード
struct jsonModel: Decodable { var name: String var number: Int var value: Double var last_value: Double var gender: String var age: Int } //jsonデータの取得 public func getJson() { let url = "該当のurl" let headers: HTTPHeaders = ["Content-Type": "application/json"] Alamofire.request(url, method: .get, encoding: URLEncoding(destination: .queryString), headers: headers).responseJSON {response in guard let data = response.data else { return } do { let jsonData = try JSONDecoder().decode([jsonModel].self, from: data) } catch let error { print("Error: (error)") } } } var mergeJsonData = [String:[String:Any]]() for data in jsonData { if let _mergeJsonData = mergeJsonData[data.name] { mergeJsonData[data.name] = mergeJsonData[data.name] } else { mergeJsonData.updateValue(["value": 0, "last_value": 0, "number": 0], forKey: data.name) } if let _mergeJsonData = mergeJsonData[data.name]!["value"] { print(mergeJsonData[data.name]!["value"]!) //この時点では0が出力される let tmp = cast(value: mergeJsonData[data.name]!["value"] as! Int)! //nilエラー mergeJsonData[data.name]!["value"] = tmp + data.value } else { mergeJsonData[data.name]!.updateValue(data.value, forKey: "value") } } private func cast(value: Any) -> Double? { if let double = value as? Double { return double } return nil }
試したこと
mapを使ってキャストする方法も試してみましたがうまくいきませんでした。
swiftに触るのは初めてでここで質問するのも初めてですので、
何か足りない情報などありましたら教えてください。

回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/15 02:01
2020/04/15 02:13
2020/04/15 02:32
2020/04/15 02:38
2020/04/15 02:41
2020/04/15 03:00
2020/04/15 03:04