NSString initWithFormat создает значение с (null) - PullRequest
2 голосов
/ 16 октября 2011

У меня возникли некоторые проблемы при создании строки с использованием initWithFormat.Вот код, который я использую:

- (void)convertSpeedUnits
{
    NSString *speedUnits = [[NSUserDefaults standardUserDefaults] stringForKey:kSpeedUnits];
    double speed;
    if ([speedUnits isEqualToString:@"Knots"])
    {
        speed = ms2knots(currentSpeedMS);
    }
    else if ([speedUnits isEqualToString:@"MPH"])
    {
        speed = ms2kph(currentSpeedMS);             
    }
    else if ([speedUnits isEqualToString:@"KPH"])
    {
        speed = ms2mph(currentSpeedMS); 
    }

    NSString *speedLabel = [[NSString alloc] initWithFormat:@"%.2f %s", speed, speedUnits];
    currentSpeed.text = speedLabel;
    [speedLabel release];
}

Я бы ожидал, что speedLabel будет примерно таким ...

'1.12 Узлы' или '1.12 миль в час' или '1.12KPH '

однако я получаю следующее

' 1.12 (null) '

1 Ответ

9 голосов
/ 16 октября 2011

speedUnits - строка NSSt, поэтому вы должны использовать %@, а не %s:

NSString *speedLabel = [[NSString alloc] initWithFormat:@"%.2f %@", speed, speedUnits];
...