Passion+Action+Sincerely=Success!

週末にのみ趣味でコーディングするおやじの備忘録

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

   }

}

Step3:  これで、コード上のどこでもString objectからaddRandomWordが呼べるようになった。

let someString = "Hello, "
let result = someString.addRandomWord()

println("The queen says: \(result)")

 

 

SwiftのExtensionって素敵!  例えば、標準ではUIImageは、ネットから画像をダウンロードする機能や、リサイズする機能を持っていないが、UIImageを拡張して自分なりの新しい機能を追加することが簡単にできる。

 

また、普通は継承できないような structsやenumsにも、Extensionを適用することが可能なようだ(俺は実際にまだつかっことが無い)。