Почему значения не сохраняются в NSDictionary? - PullRequest
0 голосов
/ 11 июля 2009

См. Комментарии оператора log в конце фрагмента кода ... acceleration.x - десятичное число, но когда я сохраняю его в dict, оно кажется равным 0.

NSDictionary *entry = [NSDictionary dictionaryWithObjectsAndKeys:
  [NSNumber numberWithDouble:acceleration.x], @"x",
  [NSNumber numberWithDouble:acceleration.y], @"y",
  [NSNumber numberWithDouble:acceleration.z], @"z",
  [NSDate date], @"date",
   nil];
[self.accelerometerArray addObject: entry];
//this logs a decimal number as expected
NSLog(@"Acceleration.x: %g", acceleration.x);
//this logs a 0 :(
NSLog(@"Accel Array X: %g", [entry objectForKey: @"x"]);

1 Ответ

3 голосов
/ 11 июля 2009

При звонке:

[entry objectForKey: @"x"]

Вам возвращается экземпляр NSNumber, а не двойное значение. Измените эту строку на:

NSLog(@"Accel Array X: %g", [[entry objectForKey: @"x"] doubleValue]);

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...