SwiftのExtensionが素敵すぎる
View Controllerを拡張して、delegate methodを作るのは日常茶飯事だが、自分自身が書いていないiOS frameworkのクラスも簡単に拡張できる。
話を超簡単にするため、以下にiOSのStringクラスを拡張して、string objectにランダムな言葉を追加する例を備忘録として残しておく。
Step1: プロジェクトにソースファイルを追加する。例えば、String+RandomWord.swift
Step2: このファイルに、以下のようにString extensionを追加する
extension String {
func addRandomWord() -> String {
let value = arc4random_uniform(3)
var word: String
switch value {
case 0: word = "rabit"
case 1: word = "banana"
case 2: word = "boat"
default: word = ""
}
return self + word
}
}
let someString = "Hello, "
let result = someString.addRandomWord()println("The queen says: \(result)")
SwiftのExtensionって素敵! 例えば、標準ではUIImageは、ネットから画像をダウンロードする機能や、リサイズする機能を持っていないが、UIImageを拡張して自分なりの新しい機能を追加することが簡単にできる。
また、普通は継承できないような structsやenumsにも、Extensionを適用することが可能なようだ(俺は実際にまだつかっことが無い)。