Cover Image for Building lists and navigation — SwiftUI Tutorials やってみた

Building lists and navigation — SwiftUI Tutorials やってみた

概要

Building lists and navigation — SwiftUI Tutorials | Apple Developer Documentation をやってみたのでメモ

メモ

Section 1: Create a landmark model

  • swift でも struct は struct
  • struct Landmark: Hashable, Codable 継承的なやつができるっぽい
    • Hashable はハッシュ化できるだから、それを用いたソートとか比較に使うっぽい
    • Codable は エンコードおよびデコード(シリアライズとデシリアライズ)ができる I/F っぽい
  • 画像はアセットカタログに入れる
  • struct の中にも struct が定義できる
  • func だけでも定義できる
    • ということは Swift の ファーストクラスオブジェクト は関数らしい
  • guard 文
    • Rust的には Option.unwrap() してる感じか?
      • ちょっとハンドリング的に強引なきもするが
  • SwiftにもOptional ありそうで嬉しい
  • try catch に do も必要
    • これは見ない書き方
    • tryがかかる文がどれなのかわかりやすくて良いかも

Section 2: Create the row view

  • struct で初期化されてないものはコンストラクタで渡す必要がある
    • 特にコンストラクタを書かなくても自動でそうなるらしい
    • これはまあそうか
  • import してなくても他のファイルに定義した変数やstructが参照できる
    • これはちょっとわからん

Section 3: Customize the row preview

  • #Preview は複数定義できる
    • storybook的な使い方できそう
  • Group でまとめることもできる

Section 4: Create the list of landmarks

Section 5: Make the list dynamic

  • in 句の書き方がまた独特...
  • \ は何を表すのか...?
    • keyPathを表すのに使うらしい
    • \.id で明示的になため省略されているなんらかのstructのidになるみたい
    • 初見でわかるかこんなもん
  • Identifiable を入れるとidが必要な時に自動で解決してくれるっぽい

Section 6: Set up navigation between list and detail

  • NavigationSplitView で動的にナビゲーションを作れる
    • これはよく使いそうなので有用そう
    • スクロール位置を維持したまま戻るボタンも動かすとかwebでやるとめんどくさいのでとても助かるやつ

Section 7: Pass data into child views

  • 今まで作ったものをリファクタリングしてデータを下位のviewに渡していく
    • ReactでいうPropsのバケツリレー的なやつか
    • React の コンポーネントが swiftUI だと view なのか

Section 8: Generate previews dynamically

  • Preview を iPad にするとNavigationSplitViewの見た目が変わる
  • OS側で用意してある最適なナビゲーションの形にしてくれるってことか
  • 画面サイズのこと考えないで良いのはいいね!
  • 「ワシは全部細かくUI指定したいんじゃ!!!」ってなると地獄っぽい匂いがする