2011-07-14 20 views
9

Estoy calculando la velocidad de un iPhone, y necesito saber cómo convertir la variable calculateSpeed ​​que es de tipo double para escribir string para mostrar en una etiqueta.Cómo convertir el tipo de doble a cadena de iPhone?

Aquí es lo que tengo en la cabecera:

@interface myProject : UIViewController <CLLocationManagerDelegate> { 

double calculatedSpeed; 
    UILabel *velocityLabel; 
} 

Y aquí es lo que tengo en consideración: los

-(void)speedLocation:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation 
{ 
double gpsSpeed = newLocation.speed; 

if(oldLocation != nil) 
{ 
    CLLocationDistance distanceChange = [newLocation getDistanceFrom:oldLocation]; 
    NSTimeInterval sinceLastUpdate = [newLocation.timestamp timeIntervalSinceDate:oldLocation.timestamp]; 
    calculatedSpeed = distanceChange/sinceLastUpdate; 

    velocityLabel.text = calculatedSpeed; 

} 

} 

Observe cómo estoy tratando de establecer velocityLabel a calculatedSpeed, que es una variable con el tipo doble. Entonces, naturalmente, me da el error: tipo incompatible para el argumento 1 de 'setText:'.

Su ayuda es muy apreciada.

Gracias!

Respuesta

20
velocityLabel.text = [NSString stringWithFormat:@"%g", calculatedSpeed]; 
+1

Posiblemente también es útil para decir que los formateadores aceptados por NSString son los mismos que los aceptados por printf, como se documenta en un montón de lugares, incluyendo http://www.thinkage.ca/english/gcos/expl/c /lib/printf.html. Por lo tanto, si busca 'g' verá que es un resultado "doble" (es decir, flotante según las reglas de promoción C) en formato científico o estándar. – Tommy

+2

@Tommy: O 'man 3 printf'. –

+0

¡Funciona genial gracias! –

Cuestiones relacionadas