13
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Swift 覚書

Last updated at Posted at 2015-10-13

#これは?

  • 便利なんだけど、忘れちゃいがちな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

簡単に解説すると:

  1. Xcodeのプロジェクトにplaygroundを突っ込む(ドラッグ&ドロップでOK)
  2. 動作確認したいExtensionを、上記StackOverflowの記事内のスクリーンショットのように、Playgroundファイルの中のSourceフォルダに放り込む
  3. ※Extension内の関数、変数などは全てpublicにする
  4. それでも動かない場合は、念のためXcodeを再起動
    この3~4ステップでOKです。簡単。

もちろん、Extensionに限らず、Playgroundのコードを整理するのに色々と活用可能だと思います。

13
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?