swift開発におけるObjective-Cソースの読み替え

swiftにてiOS開発を行う場合、かなりの確率でObjective-Cのソースを読まないといけないというのが現状です。

 

そこで、iOS開発をswiftから初めたんだけど、

Objective-Cが読めねーよ!って方のため(自分のため)にメモを少しずつ追記していきたいと思います。

 

「YES」「NO」

Objective-Cでは、真偽値を表現するために3種類も存在します。

(3種類の真偽値に関する詳細は以下サイトに詳しく記載されております。Objective-Cでの真偽値型 - ちくわプログラマにっき

基本どれも一緒な

 

ので特に気にせずswiftでは、

「true」「false」を使用しましょう。

 

delegateにselfを入れる

Objective-C

MPMediaPickerController picker;

[picker setDelegate: self];

swift

var picker: MPMediaPickerController;

picker.delegate = self;

 

■文字列連結

swiftObjective-Cと比較すると格段に、文字列が簡単になりました。

swiftのコードを書く上では参照する必要はないですが、

既存のObjective-Cコードを読む、微修正する際にはObjective-Cでの記述方法を知る必要があるのでメモ。

 

Objective-C

(例1)

NSString *moji = @"文字列";
NSString *moji_2 = @"を連結します。";
NSInteger *suchiInteger = 123;
NSMutableString *renketsuMoji = [NSMutableString stringWithString:@""];

[renketsuMoji appendString:moji];
[renketsuMoji appendString:moji_2];
NSString *suchiInteger_String = [NSString stringWithFormat:@"%ld", (long)suchiInteger];
[renketsuMoji appendString:suchiInteger_String];

(例2)

NSString *moji = @"文字列";
NSString *moji_2 = @"を連結します。";
NSInteger *suchiInteger = 123;

NSString *renketsuYo = [NSString stringWithFormat:@"%@%@%ld", moji, moji_2, (long)suchiInteger];

 

Objective-Cでの文字列連結方法は、用途に応じて色々あります。

きれいなコードを書く、他の方が書いたソースコードを読むためには全種類知っておくほうが良いですが、

上記の「appendString、stringWithFormat」の2つさえ覚えていれば一旦はよしとしても良い気がする。

 

他のいくつかの連結方法は、以下サイトを参照。

逆引きObjective-C for iPhoneアプリ - 文字列を数値に,数値を文字列に変換する

 

swift

swiftだと「+」で繋ぐだけ!

 

(例)

let moji: String = "文字列"
let moji_2: String = "を連結します。"
let suchi_Integer: NSInteger = 123

// 文字列自体は「+」で連結するだけ。

var renketsuMoji: String = moji + moji_2 + String(suchi_Integer)

// → 数値などのIntegerも「String()」で囲えばいいだけ
var renketsuMoji_2: String = moji + moji_2 + "\(suchi_Integer)"

// → もう1つ、数値を変換する場合は「\(変数)」の形でバインド変数を利用すれば可能です。

※バインド変数 swiftで検索すれば、詳細な説明はどっかのwebサイトにある。