반응형
Notice
Recent Posts
Recent Comments
Link
Today
Total
07-08 00:00
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Archives
관리 메뉴

iOS 개발 기록 블로그

iOS (Swift) OpenWeather API 모바일 앱에서 요청하기 본문

iOS

iOS (Swift) OpenWeather API 모바일 앱에서 요청하기

crazydeer 2022. 6. 21. 09:00
반응형

우선 지난 글에 이어서 웹 브라우저에서 받은 결과 중에

Temperature 값을 Celsius로 받는 방법을 알아보자.

 

 

iOS (Swift) OpenWeather API 사용하는 법

API 란? 명령어, 함수, 프로토콜, 객체 등의 집합으로 많은 프로그래머들이 소프트웨어를 만들거나 외부 시스템과 상호작용하는 데에 사용할 수 있는 것이다. 많은 개발자들이 흔한

crazydeer.tistory.com

 

Request 결과에서 temp Celsius 나오도록 하기

간단하다.

 

문서를 뒤져보면 아래와 같은 부분을 찾을  있다.

파라미터를 추가해주면 간단하게 해결된다.

 

Current weather data - OpenWeatherMap

Access current weather data for any location on Earth including over 200,000 cities! We collect and process weather data from different sources such as global and local weather models, satellites, radars and a vast network of weather stations. Data is avai

openweathermap.org

Temp Celsius 값으로 받기

 

파라미터 끝에 &  붙여주고 units=metric 붙여서 url 완성해준다.

https://api.openweathermap.org/data/2.5/weather?q=london&appid={YOUR_API_KEY}&units=metric

 

Temp Celsius로 받기 결과 이미지

 

 브라우저에서 이렇게 URL 기호에 맞게 완성하여 요청하면 결과가 나온다.

그러면 각자 만들고 있는  내에서  오픈 데이터를 받으려면 어떻게 해야 할까?

 

 

 

Request OpenWeatherAPI in Your App

Model 폴더 내에 WeatherManger.swift 파일을 하나 만든다.

 

파일 생성

 

그리고 구조체를 하나 만들어준다.

 

 

WeatherManager.swift Structure 생성

 

여기서 ? 뒤에 붙는 파라미터들은 & 연결되고

파라미터들의 순서는 상관없이 동작한다.

 

 

WeatherManager.swift Structure 생성 2

 

q=도시이름은 사용자의 입력에 의해 받도록 만들기 위해

fetchWeather이라는 함수를 만들고 cityName 받도록 한다.

 

 

 

 

그리고 WeatherViewController.swift 파일에서

weatherManager 변수를 만들어주고 구조체를 초기화해준다.

 

 

WeatherViewController.swift 파일 수정

 

여기서 searchTextField.text Optional이기 때문에

 값이 들어오면 심각한 에러가   있다.

 

따라서 지난 Optional 글에서 썼던

Optional Binding 사용하여 코딩한다.

 

 

iOS(Swift) Optional 완벽 이해 (5단계)

Optional을 이해하기 위한 5가지 단계 Force Unwrapping Check for nil value Optional Binding Nil Coalsecing Operator Optional Chaining OptionalsDemo라는새로운 프로젝트 생성 let myOptional: Stri..

crazydeer.tistory.com

 

 

다시 WeatherManager.swift 파일에서 아래와 같이 프린트 코드를 추가해준다.

struct WeatherManager {
    let weatherURL = "https://api.openweathermap.org/data/2.5/weather?appid={YOUR_API_KEY}&units=metric"
    
    func fetchWeather(cityName: String) {
        let urlString = "\(weatherURL)&q=\(cityName)"
        
        print(urlString)
    }
}

이제  시뮬레이터를 실행해서 원하는 도시이름을 입력하고

Search 버튼을 누르면 아래와 같이 콘솔창에 로그가 찍혀 나온다.

 

시뮬레이터 이미지

 

결과 (콘솔)

콘솔 창 로그

 

 브라우저에  URL 복사해서 붙여 넣어보면

서울의 현재 날씨 데이터를 받아볼  있다.

 

 

 

 

참고

안젤라유 강의: https://www.udemy.com/course/ios-13-app-development-bootcamp/

 

iOS & Swift - The Complete iOS App Development Bootcamp

From Beginner to iOS App Developer with Just One Course! Fully Updated with a Comprehensive Module Dedicated to SwiftUI!

www.udemy.com

 

반응형