Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
6
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

@chibi929

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

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

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
6
Help us understand the problem. What are the problem?