- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- struct
- rxswift
- rest api
- Request
- substr
- barplot
- 딥러닝
- sigmoid
- scheduledTimer
- swiftUI
- Linux
- 오블완
- SWIFT
- cocoapods
- SQL
- MVC
- 시각화
- 티스토리챌린지
- HTTP
- 명령어
- ReLU
- ios
- Python
- tapply
- decode
- Optional
- deeplearning
- Observable
- r
- 연산자
iOS 개발 기록 블로그
iOS (Swift) OpenWeather API 모바일 앱에서 요청하기 본문
우선 지난 글에 이어서 웹 브라우저에서 받은 결과 중에
Temperature 값을 Celsius로 받는 방법을 알아보자.
Request 결과에서 temp가 Celsius로 나오도록 하기
간단하다.
문서를 뒤져보면 아래와 같은 부분을 찾을 수 있다.
파라미터를 추가해주면 간단하게 해결된다.
파라미터 끝에 & 를 붙여주고 units=metric을 붙여서 url을 완성해준다.
https://api.openweathermap.org/data/2.5/weather?q=london&appid={YOUR_API_KEY}&units=metric
웹 브라우저에서 이렇게 URL을 기호에 맞게 완성하여 요청하면 결과가 나온다.
그러면 각자 만들고 있는 앱 내에서 이 오픈 데이터를 받으려면 어떻게 해야 할까?
Request OpenWeatherAPI in Your App
Model 폴더 내에 WeatherManger.swift 파일을 하나 만든다.
그리고 구조체를 하나 만들어준다.
여기서 ? 뒤에 붙는 파라미터들은 &로 연결되고
파라미터들의 순서는 상관없이 동작한다.
q=도시이름은 사용자의 입력에 의해 받도록 만들기 위해
fetchWeather이라는 함수를 만들고 cityName을 받도록 한다.
그리고 WeatherViewController.swift 파일에서
weatherManager 변수를 만들어주고 구조체를 초기화해준다.
여기서 searchTextField.text는 Optional이기 때문에
빈 값이 들어오면 심각한 에러가 날 수 있다.
따라서 지난 Optional 글에서 썼던
Optional Binding을 사용하여 코딩한다.
다시 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' 카테고리의 다른 글
iOS (Swift) Closure 의 개념과 사용 방법 (0) | 2022.06.23 |
---|---|
iOS (Swift) URL Session for Networking (0) | 2022.06.22 |
iOS (Swift) OpenWeather API 사용하는 법 (0) | 2022.06.20 |
iOS (Swift) Delegate Design Pattern & Protocol (0) | 2022.06.16 |
iOS (Swift) Protocol 이란? (0) | 2022.06.15 |