iOS API JSON Parsing(気象API)の実行
これは前の文章の内容とつながっている文章です.
下一篇文章:iOS API JSONデータのインポート(気象API)
JSONパーティションの試行
さあ.こうしてJSON情報を引き寄せてきました
しかし、それをしても内容が読めず、今のようにアプリケーションで出力することはできません.だから、そこから情報を集めるべきだ.
これに先立ちtask部分を後続モジュールに変更し,この方法は前回のステップ4からなる.モジュールは、関数を作成することなく関数を実行できる機能です.
まだ知りたいなら、Closuresを確認してください.
func performRequest(urlString: String) {
. . . [원래 코드와 동일하므로 생략]
// 후행 클로저로 선언한 completionHandler
let task = session.dataTask(with: url) { data, response, error in
if error != nil {
print(error!)
return
}
// 에러가 발생하지 않았다면 if let 구문으로 들어와 data(옵셔널 데이터)를 언래핑 하게 된다.
// data는 문자열로 쉽게 출력할 수 있다.
if let safeData = data {
// 언래핑 된 data를 전송한다.
// 클로저 내부에서 다른 클로저를 실행하는 경우 self를 추가해야 한다.
self.parseJSON(weatherData: safeData)
}
}
. . .
}
}
末端に位置するperformRequest()
も実現される.func parseJSON(weatherData: Data) {
let decoder = JSONDecoder()
do {
let decodedData = try decoder.decode(WeatherData.self, from: weatherData)
print(decodedData.weather[0].description)
} catch {
print(error)
}
}
JSONDecoder
let decoder = JSONDecoder()
JSOnDecoder()メソッドを使用してJSONを復号できます.復号はSWIFT形式でJSONファイルを使用する方法です.
decode
do {
let decodedData = try decoder.decode(WeatherData.self, from: weatherData)
print(decodedData.weather[0].description)
} catch {
print(error)
}
type:デコーダプロトコルに適合する復号のタイプWeatherDataとすべてのタイプを指定するにはselfが必要です.
decode自体はthrowsを使用しているので、試してみる必要があります.
また、エラーを防止するためにdo-catch構文を使用することもできます.
また、定数である
parseJSON()
はdecodedData
として指定されている.したがって、
WeatherData
に存在する変数、定数、関数等を用いることができる.つまり,復号化のためには構造体をJSONファイルのように組織する必要がある.
WeatherData
SWIFTファイルを個別にマイニングしたい.
struct WeatherData: Decodable {
let name: String
let main: Main
let weather: [Weather]
}
// JSON에서 제공하는 이름 그대로 작성해줘야 한다.
struct Main: Decodable{
let temp: Double
}
struct Weather: Decodable {
let description: String
}
構造体の横にあるDecodableは、自動的にJSON式に変換して復号できるプロトコルです.JSONファイル中のオブジェクトに従い,必要なもののみを抽出して構造体を構成した.
このようにしてアプリケーションを構築すると
(現在のprintはdescription値)
こうしてJSON内に表示されているものが出力されます.
そのままJSON内に情報を出力してみます.
以降の情報はLabelに自分で追加して適用してほしい.
Reference
この問題について(iOS API JSON Parsing(気象API)の実行), 我々は、より多くの情報をここで見つけました https://velog.io/@kirri1124/iOS-API-JSON-Parsing-하기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol