Objective-Cで書かれたソースコードは、importし、構文を変換すればSwiftでも利用することができます
ここでは、初期化、プロパティへのアクセス、メソッドの呼び出しといった基本的な構文変換の例を紹介します
UITableView *myTableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped];Swiftでは
let myTableView: UITableView = UITableView(frame: CGRectZero, style: .Grouped)※ [[UITableView alloc] init] → UITableView()(=init()) ※allocはSwiftが処理しています
別の初期化の例、
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()