1.基本を意識してコーディンングをする
書籍を参考にする
調べた内容をメモに残す
3件以上 10件以上
-
1. クロージャ
関数閉包 関数のスコープにある変数を自分が定義された環境に閉じ込めるためのデータ構造
定義方法
{ (引数名: 型) -> 戻り値の型 in
// クロージャの実行時に実行される文を書く
// 必要に応じてreturn文で戻り値を返却する
}
-
2. オプショナル型 バインディング
オプショナル型 Optional型 値があるか空のいずれかを表す型
オプショナルバインディング
if-let文
値の有無による分岐
if let 定数名 = Optional型の値 {
Wrapped型の値が存在する場合に実行される文
} else {
存在しない場合
}
-
3. enum 全てのcaseを配列で取得
CaseIterableプロトコル (要素列挙のプロトコル)
enum 列挙型名: String, CaseIterable {
case ケース名
var text: String {
switch self {
case .ケース名
return "米国"
}
}
取得する
let zzz = xxx.allCases.map { $0.rawValue }
// テキストを取得
xxx(rawValue: zzw[要素番号]?.text
-
4. for文 for in where
正しい
for in where {}
誤り
for in {
if なんとか {
}
}
この書き方だとエラーが発生する
5. 配列 ソート
xxx.sort(by: {$0.name < $1.name}) 昇順での並び替え
xxx.sort(by: {$0.name > $1.name}) 降順での並び替え
sort(by:) 配列の中身を変更する
sorted(by:) 配列の中身を変更しないで、ソートした新しい配列を返す6. タプル
順序付けされた値の集合体のこと
異なる型の値をひとつの変数、定数で扱えるようになる。ただし、値の追加や削除、または繰り返し処理はできない。関数呼び出しの戻り値に使える。
値のみ宣言 var 変数名 = (値1, 値2, 値3)
型付宣言 var 変数名: (Int, String, Bool) = (…
ラベル付き宣言 var 変数名: (count: 123, alpha: "abc", …
型付/ラベル付き宣言 var 変数名 = (count: Int, alpha: String, isFlag: Bool) = (count: 123, alpha: "abc", …7. 変数
var global = "global" // グローバル変数 全てのクラスから参照可能 システム全体でひとつじゃないとダメ
class myclass {
public var a = "a" // インスタンス変数 インスタンス化すると他クラスから参照可能
var b = "b" // インスタンス変数 インスタンス化すると他クラスから参照可能
private var c = "c" // インスタンス変数 他クラスから参照不可
static var d = "d" // クラス変数 他クラスからmyClass.d で参照可能
func method() {
var e = "e" // ローカル変数 メソッド内でのみ有効
}
}8. delegate
8-5.カスタムセル上のボタンを押して画面遷移をしたい
と同じ9. 命名規則
アッパーキャメル
クラス名、構造体名、列挙型名、プロトコル名
スネークケース大文字
グローバル定数、クラス定数
キャメルケース
変数名、関数名、ラベル名
元の名前の先頭に「_」を付ける オプショナルバインディングでアンラップした変数
ファイル名
基本的に、クラス名、構造体名、列挙型名、プロトコル名
例外的に、extensionに限り、クラス名 + 拡張内容 またそのファイルはExtensionディレクトリに配置する
メソッド名 どのような処理をするか理解できるようにする10. 通知 オブザーバパターン
Swiftにおけるイベント通知のパターン
・デリゲートパターン
・クロージャ
・オブザーバパターン
オブザーバパターン
実装方法
① 通知を受け取るオブジェクトにNotification型の値を引数に持つメソッドを実装する
② NotificationCenterクラスに通知を受け取るオブジェクト指向を登録する
③ NotificationCenterクラスに通知を投稿する