🌤️ 봄여어름갈겨어울 (심화 팀 프로젝트)
53. 스파르타 코딩 클럽 - 봄여어름갈겨어울 #3 (날씨앱)
52. 스파르타 코딩 클럽 - 봄여어름갈겨어울 #2 (날씨앱)51. 스파르타 코딩 클럽 - 봄여어름갈겨어울 #1 (날씨앱)🌤️ 봄여어름갈겨어울 (심화 팀 프로젝트)최종 프로젝트 전 마지막 팀 프로젝트인
coding-pill.tistory.com
👨🏻💻 오늘 작업 내용
[ 1. NetworkManager에 날씨 아이콘을 불러오는 함수 추가 ]
[Feat] #17 - NetworkManager에 날씨 아이콘을 불러오는 함수 추가 by heopill · Pull Request #18 · mnh4140/First-pa
close #17 ⛳️ Work Description NetworkManager에 날씨 아이콘을 불러오는 함수 추가하였습니다 Single을 사용해서 AF.request 성공시 image를 UIImage 형태로 Return 📢 To Reviewers 코드리뷰 부탁드립니다. ✅ Checklist
github.com
// 날씨 아이콘을 불러오는 함수
func loadIconImage(icon: String) -> Single<UIImage> {
return Single.create { single in
let imageUrl = "https://openweathermap.org/img/wn/\(icon)@2x.png"
AF.request(imageUrl).responseData { response in
if let data = response.data, let image = UIImage(data: data) {
single(.success(image))
}
}
return Disposables.create()
}
}
[ 2. 팀원과 ViewModel 바인딩 작업 ]
[Feat] NetworkManager를 이용해 현재 날씨 구현 by ghnn-n · Pull Request #16 · mnh4140/First-party_Spr-summmer-fal-win
close #14 ⛳️ Work Description 현재 날씨를 표시하는 셀 구현 📸 Screenshot 📢 To Reviewers 코드리뷰 부탁드립니다. ✅ Checklist 주석 및 프린트문 제거 확인. 컨벤션 준수 확인.
github.com
[ 3. NetworkManager 함수 수정 - weatherForecast와 image data 10개를 방출하는 함수 추가 ]
// weatherForecast 와 icon image Data 배열 10개를 방출하는 함수
func fetchForeCastAndTenImageData(lat: Double, lon: Double) -> Single<(WeatherForecast, [Data])> {
return fetchForeCastData(lat: lat, lon: lon)
.flatMap { weatherForecast in
// 예보에서 아이콘 코드 최대 10개 추출
let iconIds = weatherForecast.list.prefix(10).compactMap { $0.weather.first?.icon }
// 각 아이콘 코드로부터 이미지 데이터 다운로드 요청 Single 배열
let imageSingles = iconIds.map { iconIds in
return self.fetchIconImageData(iconIds: iconIds)
}
// 모든 이미지 데이터 다운로드 완료 후 결과 결합
return Single.zip(imageSingles) { imageDatas in
return (weatherForecast, imageDatas)
}
}
}
// 날씨 아이콘을 불러오는 함수 - Data를 반환
func fetchIconImageData(iconIds: String) -> Single<Data> {
return Single.create { single in
let imageUrl = "https://openweathermap.org/img/wn/\(iconIds)@2x.png"
// alamofire을 이용해서 request 후 성공시 받은 response에서 data를 방출
AF.request(imageUrl).responseData { response in
switch response.result {
case .success(let data):
single(.success(data)) // 성공시
case .failure(let error):
single(.failure(error)) // 실패시
}
}
return Disposables.create()
}
}
'스파르타 코딩 클럽 - iOS 스타터 6기 > 본 캠프' 카테고리의 다른 글
56. 스파르타 코딩 클럽 - 봄여어름갈겨어울 #6 (날씨앱) (0) | 2025.05.27 |
---|---|
55. 스파르타 코딩 클럽 - 봄여어름갈겨어울 #5 (날씨앱) (0) | 2025.05.26 |
53. 스파르타 코딩 클럽 - 봄여어름갈겨어울 #3 (날씨앱) (0) | 2025.05.22 |
52. 스파르타 코딩 클럽 - 봄여어름갈겨어울 #2 (날씨앱) (0) | 2025.05.21 |
51. 스파르타 코딩 클럽 - 봄여어름갈겨어울 #1 (날씨앱) (0) | 2025.05.20 |