-ObjectiveCに変わる主力となれるか?

*ライブラリ [#r47b4bb3]

**ライブラリ管理 [#j995b511]

podfiles

-PromiseKit(非同期処理)
-Moya(APIアクセス)

**Moya [#n9447217]

-Almofire(APIアクセス)をラップしたもの
-TargetTypeを拡張してAPI接続情報を作成


*他言語との対比 [#g62f625e]

**他言語にあるもので同じもの [#i628ec3b]

|static|static var totalCount : Int,computedやメソッドの場合はclassをつける|
|internal/private/public|internal=publicでswiftの場合はデフォルトinternal。publicはFrameworkdで使うもので通常は使わない|
|abstract|optional|


**他言語にあるもので違うもの [#u5f894db]


|plist|properties|
|Optional|?で宣言して、!でget。Optionalチェーンは?でない場合はnil|
|コンストラクタ|init(),deinit()|
|property|読み取り専用のlet,通常のvar,さらに計算結果のみを返すcomputedプロパティはgetter,setterに計算メソッドを持たせるイメージ|

**多言語にないもの [#dca3baff]

|protocol|約束事、interfaceのようなもの|
|property observer|willSet,didSet,initの3つのメソッドを追加できる。ここまで来るとクラスの小さいバージョンのようだ|
|extension|簡単にクラスを拡張できる|
|protocol|継承よりもこちらのほうが良いのでは?特に親クラスが肥大化するようなケースで|

**基本文法 [#me48ce36]

***定義 [#nddc479c]

 let hoge = "変えられない値"
 var hoge = "変えられる値"
 var hoge:String //定義だけも可能

***連結 [#t4ac48e9]

文字列同士ならJavaと一緒。文字列と数値はそのまま連結できない。変数を表す()で囲んで使うか。toStringを使う

 let score = 123
 let result = "\(score)点"
 let scoreString = toString(score)

***オプショナル [#b14a6711]

 var name1: String!
 var name2: String?

 使う時は!がget
 print(name2!)
 
 宣言時に!だと、使用時に!不要だけどnilだと落ちるので注意
 print name1

***制御文 [#jf0cbc24]

ほぼJavaと一緒。Case文は無用なbreakが不要なのでJavaよりは簡単だろう。

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS