iOSアプリ開発情報まとめ
このエントリーをはてなブックマークに追加

Objective-C構文のSwift構文への変換

Objective-Cで書かれたソースコードは、importし、構文を変換すればSwiftでも利用することができます
ここでは、初期化、プロパティへのアクセス、メソッドの呼び出しといった基本的な構文変換の例を紹介します

初期化 / Initialization

Objective-Cでは
UITableView *myTableView =
   [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped];
Swiftでは
let myTableView: UITableView =
   UITableView(frame: CGRectZero, style: .Grouped)
※ [[UITableView alloc] init] → UITableView()(=init()) ※allocはSwiftが処理しています
※ initWithFrame: → frame: ※Withは省略します
※ style: → style:
※ UITableViewStyleGrouped → .Grouped ※UITableViewStyleがここで使われるのは必然なので省略されている

別の初期化の例、

let myTextField = UITextField(frame: CGRect(x: 0.0, y: 0.0, width: 200.0, height: 40.0))
※ 定数 myTextField の型指定 : UITextField は少略されている

Objective-CのファクトリメソッドはSwiftでコンビニエンスイニシャライザとして取り込まれます

Objective-Cでは
UIColor *color = [UIColor colorWithRed:0.5 green:0.0 blue:0.5 alpha:1.0];
Swiftでは
let color = UIColor(red: 0.5, green: 0.0, blue: 0.5, alpha: 1.0)

失敗がありえるObjective-Cの初期化は、Swiftではオプショナル型の init!(...) で取り込まれ、利用する時はオプショナルバインディングを使います

if let image = UIImage(contentsOfFile: "MyImage.png") { // ファイルが不在の場合、初期化に失敗する
    // loaded the image successfully
} else {
    // could not load the image
}

プロパティへのアクセス

ドット構文を使いプロパティへアクセスします

myTextField.textColor = UIColor.darkGrayColor()
myTextField.text = "Hello world"

メソッドの利用

ドット構文を使いメソッドを呼び出します

Objective-Cでは
[myTableView insertSubview:mySubview atIndex:2];
Swiftでは
myTableView.insertSubview(mySubview, atIndex: 2)
引数がない場合でも()は付けなければなりません
myTableView.layoutIfNeeded()

さらなる詳しい情報は、Using Swift with Cocoa and Objective-C (Swift 2.2)

戻る