Closed jayn2u closed 6 months ago
private func fetchData() { guard let hostString = URL(string: "https://dog.ceo/api/breeds/image/random") else { debugPrint("Something wrong...") return } var urlRequest = URLRequest(url: hostString) urlRequest.httpMethod = "GET" let group = DispatchGroup() for _ in 0...9 { group.enter() let task = URLSession.shared.dataTask(with: urlRequest) { [weak self] data, _, error in if let error = error { debugPrint(error) group.leave() return } guard let data = data else { group.leave() return } let decoder = JSONDecoder() do { let decodedData = try decoder.decode(DogModel.self, from: data) debugPrint(decodedData.message) if let imageUrl = URL(string: decodedData.message) { self?.dogData.append(try Data(contentsOf: imageUrl)) } } catch { debugPrint("Something wrong in decoding...") } group.leave() } task.resume() } group.notify(queue: .main) { self.tableView.reloadData() } }
작업을 하다보니 옵셔널 데이터들을 핸들링 해야 하는 순간들이 꽤 많더라구. 하지만 중구난방 if let이나 guard let이 너무 가독성이 떨어지는 느낌이야. 그래서 위의 코드를 개선한다면 어떻게 하면 괜찮은지 궁금해.
if let
guard let
동작하는 원리가 궁금하다면 개인 레포지토리를 참고해주세요.
코드 리뷰 요청
Code
문제
작업을 하다보니 옵셔널 데이터들을 핸들링 해야 하는 순간들이 꽤 많더라구. 하지만 중구난방
if let
이나guard let
이 너무 가독성이 떨어지는 느낌이야. 그래서 위의 코드를 개선한다면 어떻게 하면 괜찮은지 궁금해.추신
동작하는 원리가 궁금하다면 개인 레포지토리를 참고해주세요.