Help us understand the problem. What is going on with this article?

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

More than 5 years have passed since last update.

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の順で設定するため一瞬わからなくなる。

mashandroom
会社外活動・コミュニティとして、ハッカソンや各種イベントのボランティアなどに参加。ただただ自分たちが楽しみ、結果周りの人が喜んでくれるようなアウトプットを目指しています。創造せよ!頭にキノコが生えるまで
https://mashandroom.org
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした