Подтвердить что ты не робот

Создание NSDictionary

В следующем коде первый оператор журнала показывает десятичное значение, как ожидалось, но второй журнал NULL. Что я делаю неправильно?

NSDictionary *entry = [[NSDictionary alloc] initWithObjectsAndKeys:
  @"x", [NSNumber numberWithDouble:acceleration.x],
  @"y", [NSNumber numberWithDouble:acceleration.y],
  @"z", [NSNumber numberWithDouble:acceleration.z],
  @"date", [NSDate date],
  nil];
NSLog([NSString stringWithFormat:@"%@", [NSNumber numberWithDouble:acceleration.x]]);
NSLog([NSString stringWithFormat:@"%@", [entry objectForKey:@"x"]]);
4b9b3361

Ответ 1

Вы обмениваете заказ, в который вы вставляете объекты и ключ: вам нужно сначала вставить объект, а затем ключ, как показано в следующем примере.

NSDictionary *dict = [[NSDictionary alloc] initWithObjectsAndKeys:@"value1", @"key1", @"value2", @"key2", nil];

Ответ 2

new Objective-c поддерживает этот новый синтаксис для статической инициализации.

@{key:value}

Например:

NSDictionary* dict = @{@"x":@(acceleration.x), @"y":@(acceleration.y), @"z":@(acceleration.z), @"date":[NSDate date]};

Ответ 3

NSDictionary Синтаксис:

NSDictionary *dictionaryName = [NSDictionary dictionaryWithObjectsAndKeys:@"value1",@"key1",@value2",@"key2", nil];

Пример:

NSDictionary *importantCapitals = [NSDictionary dictionaryWithObjectsAndKeys:
@"NewDelhi",@"India",@"Tokyo",@"Japan",@"London",@"UnitedKingdom", nil];
NSLog(@"%@", importantCapitals);

Результат похож,

{India = NewDelhi; Япония = Токио; UnitedKingdom = Лондон; }