2011-07-14 14 views
9

Obliczam prędkość iPhone'a i muszę wiedzieć, jak przekonwertować zmienną metersSpeed, która jest typem double do typu string do wyświetlenia na etykiecie.Jak przekonwertować typ podwójny na ciąg iPhone'a?

Oto co mam w nagłówku:

@interface myProject : UIViewController <CLLocationManagerDelegate> { 

double calculatedSpeed; 
    UILabel *velocityLabel; 
} 

I tu jest to, co mam w głównej:

-(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; 

} 

} 

Wskazówki jak próbuję ustawić velocityLabel do calculatedSpeed, która jest zmienna z typem double. Więc naturalnie daje mi błąd: niekompatybilny typ dla argumentu 1 z 'setText:'.

Twoja pomoc jest bardzo doceniana.

Dzięki!

Odpowiedz

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

Prawdopodobnie również pomocne powiedzieć, że formatujących zaakceptowane przez NSString są takie same jak te przyjęte przez printf, co zostało udokumentowane w wielu miejscach, w tym http://www.thinkage.ca/english/gcos/expl/c /lib/printf.html. Jeśli więc spojrzysz w górę "g", zobaczysz, że jest to wynik "podwójny" (tj. Lub zmiennoprzecinkowy według zasad promocji C) w formacie naukowym lub standardowym. – Tommy

+2

@Tommy: Lub 'man 3 printf'. –

+0

To działa wielkie dzięki! –

Powiązane problemy