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() してる感じか?
- ちょっとハンドリング的に強引なきもするが
- 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
- List を使うとリスト形式の表示になる
- このあたりで formatter がないの辛くなってきた
- Jintin/Swimat: An Xcode formatter plug-in to format your swift code. を入れてみた
- Format On Save — Xcode / Swift. While Xcode provides plenty of features… | by Johannes Z. | Medium と同じ方法で、save on format を実現したのでちょっと快適になった
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指定したいんじゃ!!!」ってなると地獄っぽい匂いがする