Maccle

[Obj-C]リテラル文字対応でNSArray, NSDictionary, NSNumberの扱いが超快適に!

約 5 分

4992386023_32657b7a0b_b久々にOjb-Cいじってたら、OS X 10.8 Mountain Lionから、LLVMプロジェクトでObjective-Cでリテラル文字が使えるようになってた!

NSStringでの文字列生成

例えば、NSStringだと

NSString *myStr = [NSString stringWithString:@"Hello, World!"];

なんてやってたのが、

NSString *myStr = @"Hello, World!";

とするだけで文字列を生成できるようになっててびびった!

stringWithStringstringWithFormat すらもう必要ないんだね!

NSNumberでのリテラル

NSNumber もめっちゃ簡単!

// 従来: [NSNumber numberWithInt:1000] が
NSNumber *num1 = @1000;

// 従来: [NSNumber numberWithBool:YES] が
NSNumber *b = @YES;

また、符号なし整数(Unsiged integer)、浮動小数点型(Float integer)などのメソッドも同じようにリテラル文字で簡単に生成できます。

// 従来: [NSNumber numberWithUnsignedInt:29U] が
NSNumber  *unsighnedInt = @29U;

// 従来: [NSNumber numberWithFloat:3.14159F] が
NSNumber *piAsFloat = @3.14159F;

// 従来: [NSNumber numberWithDouble:3.1415926] が
NSNumber *piAsDouble = @3.1415926;

それぞれの整数型は、リテラル文字の最後に以下の接尾辞を付けるだけです。

  • U = unsigned integer
  • L = long
  • LL = long long
  • F = float

NSArrayでのリテラル

NSArrayもこんなに簡単に!

// 従来の配列生成方法
NSArray *bandMembers = [NSArray arrayWithObjects:@"Marc", @"Chris", @"Richard", @"Benj", @"Jerry", nil];

// リテラル文字を使った配列の生成
NSArray *bandMembers = @[@"Marc", @"Chris", @"Richard", @"Benj", @"Jerry"];

配列の値を取り出すのも超簡単!
従来の [array objectAtIndex:n](n番目の値) メソッドなんてもう無用なの!

NSArray *bandMembers = @[@"Marc", @"Chris", @"Richard", @"Benj", @"Jerry"];

// "Richard" が出力される。
NSLog(@"%@", bandMembers[2]);

NSDictionaryでのリテラル

NSDictionary だってちょちょいのちょい!
キー名 と 値を[keyName : value]の形式に対にしてまとめるだけ!

// 従来の辞書生成方法
NSDictionary *bandMembers = [NSDictionary dictionaryWithObjectsAndKeys:
    @"lead singer", @"Marc",
    @"drummer", @"Chris",
    @"lead guitar", @"Richard",
    @"bass guitar", @"Benj",
    @"saxophonist", @"Jerry",
 nil];
 
// リテラルによる生成
NSDictionary *bandMembers = @{
    @"lead singer": @"Marc",
    @"drummer": @"Chris",
    @"lead guitar": @"Richard",
    @"bass guitar": @"Benj",
    @"saxophonist": @"Jerry"
};

ディクショナリーの値の取り出しはもちろん、キー名を使えばOK!

NSDictionary *bandMembers = @{
    @"lead singer": @"Marc",
    @"drummer": @"Chris",
    @"lead guitar": @"Richard",
    @"bass guitar": @"Benj",
    @"saxophonist": @"Jerry"
};

// "Richard" が出力される
NSLog(@"%@", bandMembers[@"lead guitar"]);

もう慣れてしまえばどうってことなくなってましたが、いちいち長ったらしいObj-C独自の書式でインスタンスを生成せず、他の言語と同じようにこれらの変数が生成できるようになったのは、やっぱりコーディングが楽になるし、これからObj-Cを始める人にもちょとは敷居が下がっていいですね!

参考 : NSArray, NSDictionary and NSNumber literals

About The Author

某IT系なんちゃってエンジニアヨーダ
Apple好きだけど盲目マカーは気持ち悪いと思ってる中道だと思い込んでるしがないダメダメエンジニア。

今もってるApple製品↓
Macbook Pro 15 inch, iMac 27 inch (Late 2009), iPhone 6 Plus, iPad (初代! いらない!)
Follow :

Leave A Reply

*

Comment On Facebook