LoginSignup
2
2

More than 5 years have passed since last update.

NSDictionary

Last updated at Posted at 2015-08-06

ありがちな覚え書きです。

未初期化

NSDictionary *dic;
NSLog( @"%@", dic );
(null)

カラ1

NSDictionary *dic = @{};
NSLog( @"%@", dic );
{
}

カラ2

NSDictionary *dic = [NSMutableDictionary dictionaryWithCapacity:5];
NSLog( @"%@", dic );
{
}

アクセス

NSDictionary *dic =
@{
  @"string":    @"ABCDE",
  @"05":        @"five",
  @-1:          @"minus(number)",
  @"1":         @"one",
  @99:          @"ninety nine",
  @"-1":        @"minus(string)",
  @"number":    @12345,
};
NSLog( @"%@", dic );
{
    string = ABCDE;
    05 = five;
    "-1" = "minus(number)";
    1 = one;
    99 = "ninety nine";
    "-1" = "minus(string)";
    number = 12345;
}

上のデータにアクセスします。

直接アクセス

dic[@"number"] // 12345
dic[@"string"] // ABCDE

dic[@-1]   // minus(number)
dic[@"-1"] // minus(string)

dic[@"1"] // one
dic[@1]   // (null)

dic[@"05"] // five
dic[@"5"]  // (null)
dic[@5]    // (null)

dic[@99]   // ninety nine
dic[@"99"] // (null)

変数でアクセス

int i

i = -1; dic[@(i)] // minus(number)
i = 5;  dic[@(i)] // (null)
i = 99; dic[@(i)] // ninety nine

NSNumber *n

n = @-1; dic[n] // minus(number) 
n = @5;  dic[n] // (null)
n = @99; dic[n] // ninety nine

NSString *s

s = @"-1"; dic[s] // minus(string)
s = @"05"; dic[s] // five
s = @"5";  dic[s] // (null)
s = @"99"; dic[s] // (null)

NSMutableDictionary

    NSMutableDictionary *mdic = dic.mutableCopy;
    mdic[@"number"] = dic[@"string"];   //変更(上書き)
//  mdic[@"string"] = nil;              //nilは落ちる
//  mdic[@"string"] = dic[@"hoge"];     //結果的にnilなので落ちる
//  mdic[@"string"] = NULL;             //当然NULLも落ちる
    mdic[@"05"] = [NSNull null];
    [mdic removeObjectForKey:@99];      //削除はこう書くしかない?
    NSLog( @"%@", mdic );
{
    05 = "<null>";
    number = ABCDE;
    "-1" = "minus(number)";
    1 = one;
    "-1" = "minus(string)";
    string = ABCDE;
}

キーが存在しない

(mdic[@99] == mdic[@"05"]) = NO  //[NSNull null]と比較
(mdic[@99] == nil)         = YES

普通にnilです。

nilなDictionary

NSDictionary *dic; dic[@"hoge"] // nil
((NSDictionary *)nil)[@"hoge"]  // nil

落ちません。nilです。

2
2
0

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
2
2