iOS&Swift-Parsing JSONの勉強
友達と簡単なTodoアプリを作ることにしました.友人はバックグラウンドを担当し、iOS全体の開発を担当しています.私は初心者なので、すべてのことはYouTubeを見て行わなければなりません.
Todoアプリケーションを作成するにはDBと通信する必要があり、各種情報(ex.やるべきこと、description、日付など)を受信してJSON objectとしてswift処理する必要があるのですが、これはしないので講義を探しました.
幸いなことに、ColdWithChrisというYoutuberが親切に説明してくれたので、私は順番についていくことができました.
まずはnewsapiorgのAPIを使って練習しました.
写真の下にリンクがあり、事前にコピーしておきます.
下にスクロールすると、写真のようにJSONデータが表示されます.status、totalResults、articles、articlesには、さまざまなデータが再ネストされていることがわかります.
SwiftでJSONデータをパーティション化するには、まずマッピングするデータを構造体として宣言する必要があります.
任意NewsFeed.プロジェクトにswiftという名前のファイルを個別に作成します.
構造体は元の宣言方式で宣言するが,Codableというプロトコルを用いるべきである.まだ分かりませんが、JSONデータを簡単に復号したいなら、利用したほうがいいです.
特に、vararticle:[Article]?『アートスタイル』を書いたように、レイアウトに別途アーティクルタイプを決めました.これは下を見ると少し簡単です.
写真のようにarticles鍵にはJSONデータも大量に格納されている.
これらのデータをマッピングするには、別のsweetファイルを作成する必要があります.
Article.swiftという名前のファイルが作成されました.ここでは大まかに上図のように構造体を宣言すべきである.同様に、Codableというプロトコルを使用する必要があります.(外部変数として設定)
decoder変数を使用し、前に定義したNewsFeedを使用します.swiftファイルを使用して復号を定義します.
この状態でprint(newsFeed)セクションにブレークポイントを掛け、コンソールウィンドウにpo newsFeedを入力すると、次の情報が表示されます.
左に示すように、データ、応答などの情報の値は正常に割り当てられています.右側にJSONデータがパケット化されているのが見えます.
まず、今日はそのような方法でインポートしたデータを確認するだけでなく、実際のアプリケーションで追加インポートを使用する方法も学びました.より詳細な説明は、以降の位置決めで続行します.
Todoアプリケーションを作成するにはDBと通信する必要があり、各種情報(ex.やるべきこと、description、日付など)を受信してJSON objectとしてswift処理する必要があるのですが、これはしないので講義を探しました.
幸いなことに、ColdWithChrisというYoutuberが親切に説明してくれたので、私は順番についていくことができました.
まずはnewsapiorgのAPIを使って練習しました.
写真の下にリンクがあり、事前にコピーしておきます.
下にスクロールすると、写真のようにJSONデータが表示されます.status、totalResults、articles、articlesには、さまざまなデータが再ネストされていることがわかります.
SwiftでJSONデータをパーティション化するには、まずマッピングするデータを構造体として宣言する必要があります.
任意NewsFeed.プロジェクトにswiftという名前のファイルを個別に作成します.
構造体は元の宣言方式で宣言するが,Codableというプロトコルを用いるべきである.まだ分かりませんが、JSONデータを簡単に復号したいなら、利用したほうがいいです.
struct NewsFeed: Codable{
var status : String = ""
var totalResults : Int = 0
var articles:[Article]?
}
先に構造体を宣言します.0のような初期値を与えてもよいし、外部変数に設定してもよい.特に、vararticle:[Article]?『アートスタイル』を書いたように、レイアウトに別途アーティクルタイプを決めました.これは下を見ると少し簡単です.
写真のようにarticles鍵にはJSONデータも大量に格納されている.
これらのデータをマッピングするには、別のsweetファイルを作成する必要があります.
Article.swiftという名前のファイルが作成されました.ここでは大まかに上図のように構造体を宣言すべきである.同様に、Codableというプロトコルを使用する必要があります.(外部変数として設定)
struct Article: Codable{
var author:String?
var title:String?
var description:String?
var url:String?
var urlToImage:String?
var publishedAt:String?
var content:String?
}
次はViewControllerです.swiftファイルです.import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
//Hit the API endpoint
let urlString = "http://newsapi.org/v2/everything?q=bitcoin&from=2020-11-29&sortBy=publishedAt&apiKey=ad476a2319b24e7191a7d845537b9f1f"
//turning the string into a URL object
//URL() may return a nil, so we need a guard statement so it doesn't
let url = URL(string: urlString)
guard url != nil else{
return
}
let session = URLSession.shared
let dataTask = session.dataTask(with: url!) { (data,response,error) in
//Check that there are no errors and that data exists
if error == nil && data != nil {
//Parse JSON
let decoder = JSONDecoder()
do{
let newsFeed = try decoder.decode(NewsFeed.self, from: data!)
print(newsFeed)
}
catch{
print("Error in JSON parsing")
}
}
}
//Make the API Call
dataTask.resume()
}
}
大まかなコードは以下の通りです. let urlString = "http://newsapi.org/v2/everything?q=bitcoin&from=2020-11-29&sortBy=publishedAt&apiKey=ad476a2319b24e7191a7d845537b9f1f"
let url = URL(string: urlString)
urlオブジェクトのコードを生成します.let dataTask = session.dataTask(with: url!) { (data,response,error) in
//Check that there are no errors and that data exists
if error == nil && data != nil {
//Parse JSON
let decoder = JSONDecoder()
do{
let newsFeed = try decoder.decode(NewsFeed.self, from: data!)
print(newsFeed)
}
catch{
print("Error in JSON parsing")
}
}
}
初心者として、私はまだこの点を完全に理解していません.いずれにしても、JSOndeCODERを利用して正常なグループを作ることを学びました.decoder変数を使用し、前に定義したNewsFeedを使用します.swiftファイルを使用して復号を定義します.
この状態でprint(newsFeed)セクションにブレークポイントを掛け、コンソールウィンドウにpo newsFeedを入力すると、次の情報が表示されます.
左に示すように、データ、応答などの情報の値は正常に割り当てられています.右側にJSONデータがパケット化されているのが見えます.
まず、今日はそのような方法でインポートしたデータを確認するだけでなく、実際のアプリケーションで追加インポートを使用する方法も学びました.より詳細な説明は、以降の位置決めで続行します.
Reference
この問題について(iOS&Swift-Parsing JSONの勉強), 我々は、より多くの情報をここで見つけました https://velog.io/@kevinkim2586/iOS-Swift-공부-Parsing-JSONテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol