KeyPath<T, V>で作る汎用関数

多数のメンバを持つタイプのメンバへのアクセスを抽象化(汎用化)した下記のsortBy関数は、KeyPathで実現されています。時にはname, 時にはageで配列をソートしたい場合にsortBy関数がどちらの場合でも利用できます。なお、People型のInt型プロパティへのKeyPath<T, V>は\People.ageと表記されます。

~1 min read

macOS AppのタイトルバーにMenuボタンを設置

タイトルバーにメニューボタンを設置してみた。メニューにButtonを設置することは出来るが、Text, Pickerの設置してもコンパイルエラーは発生しないがPreview Canvasに表示されない。もちろん、Debug実行しても表示されない。(俺的メモ: ToolbarContent@FloatingTabBarワークスペース)

~1 min read

App起動前にDialogを表示する

macOS Appの場合App起動前に、SQLite3のDBからデータを取り出す処理に失敗した時にApple Scriptのdisplay dialogを使って失敗を通知できる。ネットを漁って見つけたコードを残して置く。

~1 min read

依存性注入の2つの手法を比較

ContentViewにCounterクラスのインスタンスを注入する際にインスタンスを1つだけ生成する場合と複数生成する際の振る舞いの違いを比較する

~1 min read

Shape vs ShapeStyle at SwiftUI

どちらもTextの背景を設定する際に用いるのだが前者は図形、後者は図形の塗りを指定する。次のコードではTextの背景が同じ3つのButtonを表示している。背景は灰色青で塗った角丸四角を3通りのコードで表現している。

~1 min read

Observation Frameworkでアプリ環境変数をViewで監視する2つの方法

Appleのデバイス上で動くアプリで使われる値監視メカニズムは、かつてはCombineフレームワークと共に導入されたObservableObjectプロトコルを使ったものだった。今はObservationフレームワークが使われる。これはSwiftUIをインポートすれば同時に利用できる。

1 min read

Package.swiftの書き方

Package.swiftとはAppleの開発環境でLibrary, App作成のためのProjectファイルっぽいものである。

3 min read

ScrollView-SingleView画面遷移

NavigationLinkを使ったListViewとDetailedView間の画面遷移と似た画面遷移を実現する方法を見つけた。

~1 min read

SQLite.swift の使い方

SwiftからSQLite3を扱うためのFrameworkは複数ある。Swift Package Indexで検索するとダントツに星が多いのがSQLite.swiftだ。

~1 min read