2009-07-11 19 views
0

は、コードスニペットの最後にログステートメントのコメントを見るacceleration.xは10進数ですが、私は辞書にそれを保存するときに呼び出すと、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値は返されません。キーと値のオブジェクトだけではなく、プリミティブ型することができので、あなたが直接NSDictionaryからダブルを取得することができません

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

:にその行を変更します。

関連する問題