プログラミングが特別なものでなく、多様な仕事やライフスタイルをより良くする、誰もが使える日常のツールとなる社会を目指します。スマホアプリSwift/Kotlin及びバックエンド開発、教育活動に力を入れております。
プログラミングが特別なものでなく、多様な仕事やライフスタイルをより良くする、誰もが使える日常のツールとなる社会を目指します。スマホアプリSwift/Kotlin及びバックエンド開発、教育活動に力を入れております。

Swift感を取り戻せ!Androidのkotlin/javaやった後の気持ち切り替え攻略メモ

最近のプログラマーで、同じ言語で生涯終わるなんてことは稀ではないでしょうか。
kotlin/AndroidJavaやった後に感覚をすぐに取り戻すための必須メモ。

guard
アンラップした変数をスコープ外で利用、またnilチェックのように使う
ここでguardするのはnullを許容する?マークをつけるオプショナル型になります。
上記でrealmはスコープ外でも使えるのが特徴です。
Codable
Codableなプロパティで構成されていればCodableとなる
String, Int, Double, Date, Data, URLは既にCodable
(Array, Dictionary, Optionalも同様)
enum
非常に便利
・イニシャライザ
・caseに引数を渡せる
・関数が使える
extension
クラス、構造体、列挙体などを拡張します。
Objective-Cのカテゴリより便利ですっきり。
またクラスの継承で同じクラスを拡張することが出来ます。
1.クロージャーを繰り返す拡張例
2.プロパティを拡張する例
3.whereで制約をつける
4.プロトコルの拡張
大人数で作成する場合にはプロトコルで制約をつけることがよくあります
元を変更せずに拡張することが出来ます。
5.型の定義を分割する
タプル
型が違う値をまとめられます。
メソッドの戻り値やSwiftLintで引数が多くひっかかる場合などに便利。
switch
タプル
範囲
条件
for/array/dictionary
・filter
文字通り条件指定して取り出したいときに便利
Dictionaryの場合の戻り値に注意
(swift3) Dictionaryでなくタプルで返却される
(swift4) Dictionaryで返却される
・map
要素に処理を加えたいときに便利
[3,5,7,9,11] ・reduce
要素の集計などに便利
reduceの引数0は初期値、sumは15になる。.reduce(0, combine: *)などcombineをクロージャでなく*,+などにすることも可能
組み合わせて使うと効果を発揮
for文で書いたほうが速いが数千件の簡単な処理でミリ秒の差程度なので、よっぽでなければ気にせず見やすいほうがよい。
・flatMap
2重の配列を1重にしたり、nilを除去します。
・for-in / forEach
for 変数 in 開始値 … 終了値
[1.2.3].forEach{ $0 }
・set
論理積が使えるのがメリットかな?
・array/dictionary
初期化について
・zip
2つの配列から辞書を作成
[“Grape”: 40, “Orange”: 30, “Apple”: 100] ・merge
文字通りマージできます。
closureなどのweak/@escaping
クロージャーなどでcompletionHandlerで非同期処理などする場合に、処理待ちされません。
そんなときはスコープから退避する@escapingをつけます。
asyncMethod({
self.isFinish = true
})
lazy
値が代入されたときに初期化される
struct
クラスとほぼ同じstructは値型であるとして使い分ける
継承が関係ある場合はクラス
getter/setter
通常のgetter/setterに差はないと思いますが、入力時に他の処理をさせたいだけであればwillSetやdidSetを使う
アクセスコントロール
準備中
protocol
準備中
命名規則
準備中
よく使うライブラリ
・alamfire
・RxSwift
・Realm
・SwiftLint