Swift
Hatena-Textbook/swift-programming-language.md at master · hatena/Hatena-Textbook
https://github.com/hatena/Hatena-Textbook/blob/master/swift-programming-language.md
・文字列リテラル内での変数の展開
\()
・nil->Optional.None
というクラス
・?
と書くとOptional<String>
とかになる
・Rubyの.class
⇒.dynamicType
・タプルの要素へのアクセス方法 steve.0
・ラベルもつけられるよ let steve = (name: "steve jobs", age: 56)
・++
はdeprecatedらしい…うせやろ…
let someValue = optionalInt ?? 0
・範囲演算子 ...
..<
・ifは必ず真偽値を返さないとダメ
・パターンマッチ ~=
・for ... in
句ではwhere
が使える
・C言語みたいなforループの書き方はdeprecated
・whileを最低一度は実行する場合はrepeat-while
・複数のoptional binding
if condition, let a = aNumber, let b = anotherNumber where a < b { print(a + b) }
・引数を破壊的に変更できるようにする
func increment(inout number: Int) { number += 1 } var number = 7 increment(&number) // => 8
let values = [0, 1, 2, 3, 4, 5] values.map({ (number: Int) -> Int in return 2 * number })
↑これは
values.map { 2 * $0 }
ここまで簡略化できるよ。
・ARC
・死んだ
collectionviewcellにURL( posts[indexPath.row]
)を送って個々のcellではalamofireimageで非同期に画像をセットできるようになったけれど、そもそも posts
のリクエストが完了していないのでnilになってしまう
↑ collectionviewcell.reloadData()
を使え
・UIパーツがIBOutletとコネクトできないとき
親要素のClassでソースのクラス名を指定してあげよう!!!!!!!!!!
・親で子にいろいろやらせない
極力子が全部要素の反映をやるようにする
・guardでネストを減らせ
guardする必要ないとき:functionName(hoge: Hoge)←これはoptionalにならないのでguardする必要はないよ
・非同期処理のクロージャを書いた先はどんどん実行されていくぞ
非同期処理完了時に行いたい操作はちゃんとクロージャの中に入れろ
・curly braceをどこに配置するか
http://stackoverflow.com/questions/28954873/swift-industry-standard-for-curly-braces これを見ろ
・??をつかえ
if let val: String = fileURL.path { return val } else { return "" }
は
return fileURL.path ?? ""
・enumの型名は書かなくて良い
引数として指定している場合は型は最初から期待されているので、最初からその候補を書いてあげればおk
・git cherry-pickの作業中に Unknown class HogeController in Interface Builder fileとかなった
Command + qで閉じてXcodeを開き直そう
・エラったとき
落ち着いてここを見ろ