Разбить длинный форматированный NSString на несколько строк

Учитывая следующую строку кода 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 или любом другом редакторе кода избежать очень длинной строки, которую необходимо прочитать, прокручивая ее в редакторе?

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

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


person Sabobin    schedule 13.04.2011    source источник
comment
Эй, вы пропустили передачу %f float value @ end. Средняя скорость в км/ч: %f \n Средняя скорость в км/ч:\n............ Даже этот способ сработал для меня   -  person Ajay Sharma    schedule 13.04.2011


Ответы (2)


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

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);
person Joe    schedule 13.04.2011
comment
Убедитесь, что вы добавили @ перед всеми строками в кавычках. - person XJones; 13.04.2011
comment
@XJones Он скомпилирован и напечатан только с 1 @ в начале строки в соответствии с ответом @Joe. - person Sabobin; 13.04.2011
comment
@Seamus, код был протестирован и работал так, как опубликовано, и его не нужно было редактировать. Он работает с или без @ в каждой строке, если @ находится в первой строке. См. пример здесь cocoadev.com/index.pl?NSString. - person Joe; 13.04.2011
comment
Я просто привык добавлять @ во все строки, но да, я вижу, что это работает и без него. +1 для @Джо. - person XJones; 13.04.2011
comment
Это работает в консоли, но не в sectionIndexTitle для просмотра таблицы. - person Warewolf; 10.05.2012
comment
@Принсекумар? Это работает независимо от того, компилятор объединяет строку. Результатом будет NSString, а sectionIndexTitle никак не повлияет на конкатенацию. - person Joe; 10.05.2012
comment
хорошо, но я хочу, чтобы длинные слова отображались в виде нескольких строк в sectionIndexview, не могли бы вы помочь мне в этом. ссылка stackoverflow.com/questions/10328561/ - person Warewolf; 10.05.2012

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

    // 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", где эти неприятные крестики будут заменены 4 пробелами (в данном случае в табуляторе было 4 пробела, и я не смог правильно отформатировать, извините). Таким образом, дополнительный интервал действительно может помешать вам получить ожидаемые результаты.

person matm    schedule 13.04.2011