2009-07-11 50 views
0

看到的代码片段末尾的日志声明发表评论...... acceleration.x是一个小数,但是当我把它存储到字典,它似乎是0为什么不将值存储到NSDictionary中?

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"]); 

回答

3

当你拨打:

[entry objectForKey: @"x"] 

您将返回NSNumber实例而不是double值。更改该行:

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

您将无法从一个NSDictionary检索双直接,因为键和值只能是对象,而不是原始类型。

相关问题