Swiftでコールバックはどう書くか
業務ではObjective-C中心でソースを書いていますが、
いつか移行すべき日に備え、Swiftの学習も進めています。
今回はSwiftのお話。
Objective-CでBlockによるコールバックを書く事がありますが、
Swiftだとどんな感じで書くのか調べてみました。
Objective-Cだと自分はtypedefを使ってソースの整形をしてたので、
Swiftでも同様の事をします。
注意
swiftは不慣れなのでミスがあるかもしれません。何かございましたらご指摘して頂ければ幸いです。
import UIKit typealias CompletionBlock = (result : NSString) -> () class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. var name: NSString; name = "okogeki"; callBackTest(name, success:{(str : NSString) in println(str); }, fail: {(str : NSString) in println(str); }, error: {(str : NSString) in println(str); } ); } func callBackTest(var id:NSString,var success:CompletionBlock?,var fail:CompletionBlock?, var error:CompletionBlock?){ var testStr: String; testStr = "one:"+id; if(success != nil){ success!(result:testStr); success = nil; } if(fail != nil){ testStr = "two:"+id; fail!(result: testStr); fail = nil; } if(error != nil){ testStr = "three:"+id; error!(result: testStr); error = nil; } } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } }
Optional 型とから非Optional 型へのアンラップに"!"を使うのがまだ慣れません。何となく気持ち悪い感じがします笑
P.S はてな記法でSwiftとObjective-Cを上手くみせるにはどうしたらいいんでしょうか・・・。rubyとかは用意されているのですが。