2021.04.05 (Mon)


今日の勉強のテーマ

  • JSON
  • Table View - Data Source, Delegate
  • JSON

    JavaScript Object Notationの略でjavascriptオブジェクトをマークする方法ですJSONで使用されるデータ構造は大きく2種類に分けられます
  • 集合構造
  • は、複数の属性をkey-valueとして定義することができる.
    類似した性質を有するオブジェクトを繰り返すリスト構造

  • 集合構造を定義するときはカッコ、リスト構造を定義するときはカッコを使用します.JSONで使用されるすべてのデータフォーマットは、この2つの構造によって実現される.
    名前形式のJSONオブジェクトを区別[キー:値、キー:値...]複数の属性を定義するシーケンスレス集合JSON配列[オブジェクト1,オブジェクト2,オブジェクト3...]類似オブジェクトを繰り返しリストするシーケンステーブル.
    集合構造はJSONオブジェクトの名前、リスト構造はJSON配列の名前を使用します

    以前はXMLも多く使われていましたが、より人間的な利点として使われていました

    XML

    Extensible Markup Languageの略記形式は次の通りです.

    欠点は認識が難しく、Jsonをより多く使うことです

    Codable


    まずEncodingDecodingを知る必要があります!
    Encoding
    情報の形式または形式を他の形式または形式の処理または処理方式に変換し、標準化、安全性、処理速度の向上、記憶空間の節約などの目的を達成する.
    DecodingEncoding情報を元の情報形態に復元する作業.Codableプロトコルは、sweet 4のバージョンからsweepインスタンスを他のデータ型に変換し、逆のロールを実行する方法を提供する.
    typealias Codable = Decodable & Encodable
    Codableプロトコルは、DecodableおよびEncodableを含むCodingKey通常のJSON形式のデータを互いにJSON形式のデータに変換するには、符号化/復号するJSONタイプの鍵がアプリケーションのカスタムプログラム名と一致していることを確認する必要があります.JSONのキー名と構造体property名が異なる場合、CodingKeysというStringタイプの元の値を持つ名前の列挙型を内部に宣言し、CodingKeyプロトコルに従うことができます.CodingKeys列挙型ケースの名前は、プログラムの名前と一致する必要があります.
    そして、JSONタイプのキーをProperty列挙型ケースの値として指定することができます.JSONタイプのキーがproperty名と一致している場合は、値を付ける必要はありません.

    Table View


    簡単に言えば、Table Viewは2人の秘書(Data SourceDelegate)のボスです!DataSourceの場合
  • Reporting the number of sections and rows in the table.
  • Providing cells for each row of the table.
  • Providing titles for section headers and footers.
  • Configuring the table's index, if any.
  • Responding to user- or table-initiated updates that require changes to the underlying data
  • 同じ役割と能力を持っています.
    func tableView(UITableView, numberOfRowsInSection: Int) -> Int
    func tableView(UITableView, cellForRowAt: IndexPath) -> UITableViewCell
    要求Delegateの場合
  • Create and manage custom header and footer views.
  • Specify custom heights for rows, headers, and footers.
  • Provide height estimates for better scrolling support.
  • Indent row content.
  • Respond to row selections.
  • Respond to swipes and other actions in table rows.
  • Support editing the table's content.
  • 同じ役割と能力を持っています.

    「学習活動」(UItableView)の問題


    初めてTable Viewを見て、スクロール中にアラートをトリガーするセルを選択した場合、Table View、Table View Delegate、Table View Data Source、Cell Reuse Queue...何が起こったのか見てみましょう!
    ユーザー:アプリケーションを開く!!~
    Table View->Table View Datasource:表示するセクションはいくつありますか?
    Table View->Table View Datasource:Section 0はどのくらいのRowを表示しますか?
    ... 中略.
    Table View->Table View Datasource:Section 9はどのくらいのRowを表示する必要がありますか?
    Table View->Table View Datasource:(0,0)IndexPathのセル!!
    Table ViewDatasource->Cell Reuse Queue:(0,0)IndexPathに表示するセルは、Cell Reuse Identifierのセルを指定してください.
    Cell Reuse Queue→Table View Data Source:Cell Reuse IdentifierのCellに待機中のCellがないので、新しいCellを作成します
    Table ViewDatasource->Cell Reuse Queue:(0,1)IndexPathに表示するセルは、Cell Reuse Identifierに対応するセルを提供してください!
    Cell Reuse Queue→Table View Data Source:Cell Reuse IdentifierのCellに待機中のCellがないので、新しいCellを作成します
    Table ViewDatasource->Cell Reuse Queue:(0,2)IndexPathに表示するセルは、Cell Reuse Identifierのセルを指定してください.
    Cell Reuse Queue→Table View Data Source:Cell Reuse IdentifierのCellに待機中のCellがないので、新しいCellを作成します
    User:下にスクロール~
    Table View->Table Viewデータソース:(1,0)IndexPathが表示するセルは、Cell Reuse Identifierに対応するセルを指定してください
    Cell Reuse Queue->Table Viewデータソース:Cell Reuse Identifierに対応するCellに待機中のCellがあります.あげましょう.
    ...中略.
    Table View->Table Viewデータソース:(9,0)IndexPathが表示するセルは、Cell Reuse Identifierに対応するセルを指定してください
    Cell Reuse Queue->Table Viewデータソース:Cell Reuse Identifierに対応するCellに待機中のCellがあります.あげましょう.
    Userの上までスクロールするには~
    Table View->Table Viewデータソース:(5,1)IndexPathが表示するセルは、Cell Reuse Identifierに対応するセルを指定してください
    Cell Reuse Queue->Table Viewデータソース:Cell Reuse Identifierに対応するCellに待機中のCellがあります.あげましょう.
    ユーザー:5、1点タッチ!
    Table View->Table View Delegate:ユーザーは5,1のrowを選択しました!
    Table View Delegate:複数表示するには
  • 画面をスクロール
  • 画面で消えたユニットはreusequeueに入り、
  • の再使用を待つ.