Разбейте длинный форматированный NSString на несколько строк - PullRequest
38 голосов
/ 13 апреля 2011

С учетом следующей строки кода Objective-C:

[NSString stringWithFormat:@"\n Elapsed Time  \n Battery Level:  \n Torque:  \n Energy Used  \n Energy Regenerated:\n Cadence: \n Battery Temp: \n Motor Temp: \n Incline: \n Speed MPH: \n Speed KPH:\n Avg Speed MPH: \n Avg Speed KPH:\n Distance Miles:\n Distance Km: \n Time Date Stamp:\n"];

В Xcode или любом другом редакторе кода можно ли избежать очень длинной строки, которую нужно прочитать, прокручивая ее в редакторе?

Есть ли способ разбить его на несколько строк? Я обнаружил, что если я попытаюсь сделать это, код не будет компилироваться, потому что компилятор достигает конца строки и не видит закрывающую кавычку (") для строки.

Кто-нибудь знает способ обойти это?

Ответы [ 2 ]

90 голосов
/ 13 апреля 2011

Да, есть. Смежные строки будут объединены для вас компилятором.

NSString *info = [NSString stringWithFormat:@"\n Elapsed Time  \n"
                      "Battery Level:  \n"
                      "Torque:  \n"
                      "Energy Used  \n"
                      "Energy Regenerated:\n Cadence: \n"
                      "Battery Temp: \n"
                      "Motor Temp: \n"
                      "Incline: \n Speed MPH: \n" 
                      "Speed KPH:\n"
                      "Avg Speed MPH: %f \n"
                      "Avg Speed KPH:\n"
                      "Distance Miles:\n"
                      "Distance Km: \n"
                      "Time Date Stamp:\n"];
NSLog(info);
15 голосов
/ 13 апреля 2011

Это более интересная функция, чем полезный ответ, но ...

    // your code goes with that indentation (1 tab = 4 spaces)
    NSString *myString = @"first line\
second line\
third line\
...\
last line";
    // next lines of codes

Но вы действительно должны помнить, что отступ, выполнив NSLog(@"%@", myString) для выше, приведет к: first linesecond linethird line...last line.

Теперь рассмотрим этот пример:

    // your code goes with that indentation (1 tab = 4 spaces)
    NSString *myString = @"first line\
    second line\
    third line\
    ...\
    last line";
    // next lines of codes

это даст: first lineXsecond lineXthird lineX...Xlast line", где эти противные X будут заменены на 4 пробела (в этом случае табулятор имеет 4 пробела, и я не могу получить правильное форматирование, извините). Таким образом, дополнительный интервал действительно может помешать вам получить ожидаемые результаты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...