#これは?
- 便利なんだけど、忘れちゃいがちなSwiftのコードの備忘録です。
- 初心者向け(自分も初心者)。
- ちょこちょこ加筆予定。
#変数関連
####型を指定して、tupleに値を代入
地味に情報が少ないシリーズ。
var x = (Int(10), UInt8(10), Double(5.2), CGFloat(5.2))
// tuple内の各要素に名前を付けたい場合は:
var y = (one: Int(10), two: UInt8(10), three: Double(5.2), four: CGFloat(5.2))
// 空っぽのtupleも作れる
var z = (foo: Int(), bar: Double())
####Range使って、一気に配列作っちゃう
var x : [Int] = Array(0...7) // [0, 1, 2, 3, 4, 5, 6, 7]
var y = [Int](0...7) // [0, 1, 2, 3, 4, 5, 6, 7]
// どっちの書き方でもOK
####指定した部分の文字列を抜き出す
Extension作りました。
http://qiita.com/i6r/items/49a7f738631dd9fde1b1
上記Extensionの使用例:
var str = "いろはにほへとちりぬるを"
print(str.substringEasily(8, end:9)) // りぬ
print(str.substringEasily(1...4)) // ろはにほ
#gesture/target関連
ジェスチャやターゲットの登録や削除など。登録関連は多いのに、削除に関するサンプルコードはなぜか少ない。
####gestureの登録と削除
// タップのジェスチャを登録し、タップ後にジェスチャを削除する。
// gestureの登録
myView.addGestureRecognizer(UITapGestureRecognizer(target:self, action: Selector("didClick:")))
func didClick(gestureRecognizer: UIGestureRecognizer){
// gestureの削除
myView.removeGestureRecognizer(gestureRecognizer)
}
####UIButtonのgestureを削除
地味に情報が少ない気が。
myButton.gestureRecognizers?.removeAll()
##NSTimer関連
タイマーがアクティブかどうかを調べる
if myTimer?.valid == true{
// タイマーはアクティブ
}
else{
// タイマーは止まっている
}
##条件分岐関連
####Switchで「OR」が使える
else if地獄は美しくない。
switch foo{
case 0:
print("0が代入されている")
break
case 1, 2, 3:
print("1,2,3のいずれかが代入されている")
break
...
}
####Switchで「AND」を使う
tupleを使えば、シンプルに。
// foo -> Int型
// bar -> Bool型
switch (foo, bar){
case (0, true):
print("tupleに突っ込むことで、一度に複数の条件の比較が出来る")
break
case (1, _):
print("アンダーバー'_'を使うことで、特定の要素を除外して比較することも可能")
break
...
}
tupleが便利すぎる例ですね。
##その他
####Playgroundで自作Extensionの動作確認
日本語の解説が無かったので少し躓きましたが、下記StackOverflowの解答で解決。
(Xcode7.3で確認したところ、他の解答で挙がってた方法ではダメでした。)
http://stackoverflow.com/a/33115438/3678391
簡単に解説すると:
- Xcodeのプロジェクトにplaygroundを突っ込む(ドラッグ&ドロップでOK)
- 動作確認したいExtensionを、上記StackOverflowの記事内のスクリーンショットのように、Playgroundファイルの中のSourceフォルダに放り込む
- ※Extension内の関数、変数などは全てpublicにする
- それでも動かない場合は、念のためXcodeを再起動
この3~4ステップでOKです。簡単。
もちろん、Extensionに限らず、Playgroundのコードを整理するのに色々と活用可能だと思います。