LoginSignup
8
6

More than 5 years have passed since last update.

[自分メモ用] @を使ってNSNumberとかNSArrayとか

Posted at

NSNumberとかNSArrayに値を設定する際に書きやすい方法を教えてもらった。
自分が調べて使ってた方法はどうやら古い方法だったみたいらしい。
備忘録のためにメモ。

NSNumber

@数値でNSNumber型が生成できる。

NEW
NSNumber* intNumber = @1;
NSNumber* longNumber = @2L;
NSNumber* longlongNumber = @3LL;
  • 古い書き方
OLD
NSNumber* intNumber = [NSNumber numberWithInt:1];
NSNumber* longNumber = [NSNumber numberWithLong:2L];
NSNumber* longlongNumber = [NSNumber numberWithLongLong:3LL];

全く知らないで後者のOLD記述を使っていたので、
画期的だと思ってしまいました。

NSArray

@[]でNSArrayが生成できる。
変数[添字]で取得できる。

NEW
// 初期化
NSArray* stringArray = @[@"Value1", @"Value2", @"Value3"];
NSArray* intArray = @[@1, @2, @3];

// 要素の取得
NSString* str = stringArray[0];
NSNumber* num = intArray[0];

intArrayという変数名にしましたが、NSArrayにプリミティブ型は設定できません。
実際は、@1と記述することで前述のNSNumber型となっています。
なので変数名としてはintNumberArrayなどの方が正確です。

要素の取得も直観的だった...。
objectAtIndex使ってた自分って...。

  • 古い書き方
OLD
// 初期化
NSArray* stringArray = [NSArray arrayWithObjects:@"Value1", @"Value2", @"Value3", nil];
NSArray* intArray = [NSArray arrayWithObjects:@1, @2, @3, nil];

// 要素の取得
NSString* str = [stringArray objectAtIndex:0];
NSNumber* num = [intArray objectAtIndex:0];

NSDictionary

@{}でNSDictionaryが生成できる。
変数[Key名]で取得できる。

NEW
// 初期化
NSDictionary* dictionary = @{@"Key1": @"Value1",
                             @"Key2": @"Value2",
                             @"Key3": @"Value3"};

// 要素の取得
NSString* str = dictionary[@"Key1"];

普通に直観的なKey, Valueの設定の仕方。

  • 古い書き方
OLD
// 初期化
NSDictionary* dictionary = [NSDictionary dictionaryWithObjectsAndKeys:
                @"Value1", @"Key1",
                @"Value2", @"Key2",
                @"Value3", @"Key3",
                nil];

// 要素の取得
NSString* str = [dictionary objectForKey:@"Key1"];

Value, Keyの順で設定するため一瞬わからなくなる。

8
6
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
6