Avatar
Avatar
ok
2つの目のdo-catchで1つ目の変数を参照するので入れ子にするしかなさそうな。。。 (edited)
Q2 の do-catch をネストせずに書く例です。 override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) // User の JSON の取得 Task { let user: User do { let url: URL = .init(string: "https://koherent.org/fake-service/api/user?id=\(id)")! let userData: Data = try await downloadData(from: url) user = try JSONDecoder().decode(User.self, from: userData) } catch { // エラーハンドリング print(error) return } // View への反映 title = user.name nameLabel.text = user.name let iconData: Data do { // アイコン画像の取得 iconData = try await downloadData(from: user.iconURL) } catch { // エラーハンドリング print(error) return } // Data を UIImage に変換 guard let iconImage: UIImage = .init(data: iconData) else { // エラーハンドリング print("The icon image at \(user.iconURL) has an illegal format.") return } // View への反映 iconImageView.image = iconImage } }