swift – 基礎

クロージャー

基本構文

{ (引数) -> 戻り値 in 処理 }

トレーリングクロージャ

funcHoge() { (引数) in 処理 }

@escaping

エスケープ=脱出。

クロージャで使用される。

クロージャ関数の外の変数を、クロージャ内で保持する場合に使用する。

ジェネリック

データ型を抽象化して、汎用的に使ったりする。

ジェネリック関数

// Numericプロトコルに準拠すると、足し算ができる
func generics<T: Numeric>(a1: T, b1: T) -> T {    
    return a1 + b1
}

// 整数の足し算
print(generics(a1: 1, b1: 2))  // 3

// 少数の足し算
let num1: Decimal = 1.1
let num2: Decimal = 2.2
print(generics(a1: num1, b1: num2))

func hoge<T>(p1 : t) -> t {

}

func hoge2<T, U>(p1 : T, p2 : U) -> t {

}

タイプパラメータ

プロパティラッパー

@state

@AppStorage

データ保存。アプリ終了後も保存したい値を設定する場合に使用。UserDefaults

宣言
@Statestruct(view)@State private var isPlaying: Bool = False@Stateを宣言するとSwiftUIが管理する。だから、プログラマーが勝手に初期化処理をしてはいけない。
@Stateインスタンスは、値を参照、更新するわけではない。プロパティのgetter/setterを使って、値を参照、更新している。
値をbindingするためのgetterは、$を使う。
値を変更すると、ビューを再描画する。
@Bindingstruct(view)@Binding var isPlaying: Bool親ビューの値を、子ビューに渡したいときに、子ビューで@Bindingを使う。
例、ビューAでチェックすると、ビューBの画像を切り替えたい時など
@Publishedclass値を変更した時に、ビューを再描画したい時に使用する。
ObservableObjectプロトコルに準拠している時に使用できる
@ObservedObjectstruct(view)データクラスを紐付けする時に使用する
ObservableObjectプロトコルに準拠している時に使用できる

使い方

@AppStorage("logged") var logged = false

jsonデーコード

JSONSerialization

JSONDecoder を使う

タイトルとURLをコピーしました