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らしい…うせやろ…

nil結合演算子

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

https://github.com/hatena/Hatena-Textbook/blob/master/swift-programming-language.md#automatic-reference-counting

・死んだ

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を開き直そう

・エラったとき

落ち着いてここを見ろ

f:id:keisei_1092:20160830125559p:plain