티스토리 뷰

1. restricted와 denied는 합쳐도 될 것 같다.

 

case .restricted:
    //기본적으로 새싹캠퍼스의 날씨지만, 레이블은 서울만 표시(현대카드 웨더처럼)
    allHidden()
    locationButton.image = UIImage(systemName: "location")
    hud.show(in: view)
    AddressAPIManager.shared.getLocationData(lat: lat, lon: lon) { value in
        self.locationLabel.text = "\(value.regionFirst)"
        
        WeatherAPIManager.shared.getWeatherData(lat: self.lat, lon: self.lon) { value in
            //첫번째 뷰
            let imageURL = URL(string: Endpoint.imageURL + "\(value.iconId)@2x.png")
            self.weatherImageView.kf.setImage(with: imageURL!)
            self.currentTempLabel.text = "\(WeatherModel.getWeather(weather: value.weather)) \(value.temp)°"
            self.maxMinTempLabel.text = "최고 \(value.temp_max)° · 최저 \(value.temp_min)°"
            
            //두번째 뷰
            self.windLabel.text = "풍속    \(value.wind)m/s"
            
            //세번째 뷰
            self.humidityLabel.text = "습도    \(value.humidity)%"
            
            //네번째 뷰
            self.pressureLabel.text = "기압    \(value.pressure)hPa"
            
            //다섯번째 뷰
            self.messageLabel.text = WeatherModel.getMessage(weather: value.weather)
            
            self.hud.dismiss(animated: true)
            self.allShow()
        }
    }
    showRequestLocationServiceAlert()
case .denied:
    //기본적으로 새싹캠퍼스의 날씨지만, 레이블은 서울만 표시(현대카드 웨더처럼)
    allHidden()
    locationButton.image = UIImage(systemName: "location")
    hud.show(in: view)
    AddressAPIManager.shared.getLocationData(lat: lat, lon: lon) { value in
        self.locationLabel.text = "\(value.regionFirst)"
        
        WeatherAPIManager.shared.getWeatherData(lat: self.lat, lon: self.lon) { value in
            //첫번째 뷰
            let imageURL = URL(string: Endpoint.imageURL + "\(value.iconId)@2x.png")
            self.weatherImageView.kf.setImage(with: imageURL!)
            self.currentTempLabel.text = "\(WeatherModel.getWeather(weather: value.weather)) \(value.temp)°"
            self.maxMinTempLabel.text = "최고 \(value.temp_max)° · 최저 \(value.temp_min)°"
            
            //두번째 뷰
            self.windLabel.text = "풍속    \(value.wind)m/s"
            
            //세번째 뷰
            self.humidityLabel.text = "습도    \(value.humidity)%"
            
            //네번째 뷰
            self.pressureLabel.text = "기압    \(value.pressure)hPa"
            
            //다섯번째 뷰
            self.messageLabel.text = WeatherModel.getMessage(weather: value.weather)
            
            self.hud.dismiss(animated: true)
            self.allShow()
        }
    }
    showRequestLocationServiceAlert()

지금 따로 설정해둔 것이 없기때문에 코드가 아예 동일하다. 

 

만약 둘의 코드가 다르더라도 조건문을 활용한다면 충분히 해결이 가능할 것이다.

case .restricted, .denied:
    //기본적으로 새싹캠퍼스의 날씨지만, 레이블은 서울만 표시(현대카드 웨더처럼)
    allHidden()
    locationButton.image = UIImage(systemName: "location")
    hud.show(in: view)
    AddressAPIManager.shared.getLocationData(lat: lat, lon: lon) { value in
        self.locationLabel.text = "\(value.regionFirst)"
        
        WeatherAPIManager.shared.getWeatherData(lat: self.lat, lon: self.lon) { value in
            //첫번째 뷰
            let imageURL = URL(string: Endpoint.imageURL + "\(value.iconId)@2x.png")
            self.weatherImageView.kf.setImage(with: imageURL!)
            self.currentTempLabel.text = "\(WeatherModel.getWeather(weather: value.weather)) \(value.temp)°"
            self.maxMinTempLabel.text = "최고 \(value.temp_max)° · 최저 \(value.temp_min)°"
            
            //두번째 뷰
            self.windLabel.text = "풍속    \(value.wind)m/s"
            
            //세번째 뷰
            self.humidityLabel.text = "습도    \(value.humidity)%"
            
            //네번째 뷰
            self.pressureLabel.text = "기압    \(value.pressure)hPa"
            
            //다섯번째 뷰
            self.messageLabel.text = WeatherModel.getMessage(weather: value.weather)
            
            self.hud.dismiss(animated: true)
            self.allShow()
        }
    }
    showRequestLocationServiceAlert()

 

 

 

2. 레이블에 보여질 텍스트를 모델 내에서 처리해보기

 

 

연산프로퍼티를 이용해 Model안에서 처리하도록 하였다.

 

 

3. Hidden메서드에서 뷰 객체를 동일하게 제어하므로 for each이용

 

OutletCollection을 이용해 for each를 사용하면 오른쪽처럼 간단하게 수정할 수 있었음.

 

 

4. 매개변수를 이용해 allHidden메서드와 allShow메서드 그리고 hud메서드를 하나로 통합.

 

 

 

 

5. CLGeocoder를 이용해보기

 

 

CLGeocoder를 이용해 주소 정보를 가져오면 "대한민국 서울특별시 땡땡구 ~~"이렇게 나오는데 나는 동을 표시하고싶었기때문에 사용하지 않았음.

댓글
최근에 올라온 글
Total
Today
Yesterday