-
UIKit
【Swift Concurrency】モダンな技術でAPI通信をモジュール化をしよう!
【導入】 Swiftアプリケーション開発において、非同期APIリクエスト処理をクリーンでモジュール化された形で実装することは、アプリのスケーラビリティとメンテナンス性を高める上で非常に重要です。この記事では、TCA (The Composable Architecture) とSw... -
Swift文法
【SwiftUI】【TCA】無駄なViewの再描画をなくそう大作戦
SwiftUIとTCAで一部のStateの変更によってViewが更新される方法 SwiftUIとThe Composable Architecture (TCA)で、一部のStateの変更によってViewが更新されるようにする方法には、以下の2つのパターンがあります。それぞれのパターンについて、コード例と... -
Swift文法【SwiftのKeyPath】 SwiftのKeyPathは、型のプロパティへのアクセスを表現するための型安全な方法です。これには、KeyPath, WritableKeyPath, ReferenceWritableKeyPathの3種類があります。それぞれについて、サンプルコードを用いて説明します。 KeyPath...
-
UIKit
【SwiftUI】【TCA】カスタムテキストフィールドの実装
【導入】 Composable Architecture (TCA) を使用して、SwiftUIでカスタムテキストフィールドを作成する方法について解説します。この記事では、以下の4つのSwiftファイルを用いて、カスタムテキストフィールドの機能を実装し、親ビューでそのテキストフィ... -
Swift文法
【Swift文法】え?引数は呼び出す時に必須じゃない?
【Swiftの関数引数のデフォルト値としての `String? = nil` の意味】 Swiftのコードにおいて、実は引数が必須でない場合もあるのです。関数の引数にデフォルト値として String? = nil を指定することで、その引数がオプショナルであり、省略可能であること... -
Swift文法
【R.Swift】ベタ打ち文字列を撲滅する方法
【R.Swiftの導入】 R.Swift自体の導入事態に関しては、先人たちがわかりやすい記事を残しているのでリンクを貼ります。参考記事: https://qiita.com/m_rn/items/7c73d77e07ee7bd484cb※上記時の注意点としては、検索タブに入力するURLは以下でないとrswift... -
UIKit
コンストラクタインジェクションを使用した値渡しありの画面遷移
【はじめに】 Swiftでは、依存性の注入(Dependency Injection)を使用してビューコントローラーを初期化することができます。この記事では、API通信の結果を次の画面に渡す際に、コンストラクタインジェクションを使用する方法について説明します。具体的... -
UIKit
【SwiftUI】Listのひとつの要素に複数のボタンを設置する
【何が問題か?】 タイトルを読んだ限り簡単に実現できそうですよね?実は、そうでもないのです。 素直に実装した例です。 コード import SwiftUI struct ContentView: View { let items = ["Item 1", "Item 2", "Item 3"] ... -
UIKit
【SwiftUI】超シンプル!モーダルの実装
【1. 閉じるボタン付きのモーダル実装】 概要 @Bindingを用いる場合もありますが、ベストプラクティスとしては@Environmentを利用する実装方法です(iOS15以上が必要)。より簡略化してコードを書くことができます。注意点としては、@Binding同様に親子関係... -
Swift文法
【Swift文法】shared?? シングルトンをわかりやすく解説
【1. シングルトンとは何か?】 オブジェクト指向プログラミングをしていると、クラスファイルからインスタンスを生成してメソッドを利用することが基本形です。ここでご質問です。プロジェクト全体で見た時にクラスAのインスタンスは何個ありますか??そ...