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

#iphone #objective-c #cocoa #nsstring

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

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

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

Комментарии:

1. Эй, ты пропустил передачу значения с плавающей точкой %f @ end. Средняя скорость миль/ ч: % f n Средняя скорость км/ ч: n……………. Даже этот способ сработал для меня

Ответ №1:

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

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

Комментарии:

1. Убедитесь, что вы добавляете @ перед всеми строками, заключенными в кавычки

2. @XJones Он скомпилирован и напечатан только с 1 @ в начале строки в соответствии с ответом @Joe.

3. @Seamus код был протестирован и работал в соответствии с опубликованным, и его не нужно было редактировать. Это работает с @ в каждой строке или без него, если @ находится в первой строке. Смотрите пример здесь cocoadev.com/index.pl?NSString

4. Я просто привык добавлять @ во все строки, но да, я вижу, что это работает и без этого. 1 для @Joe.

5. Это работает в консоли, но не в sectionIndexTitle для tableview

Ответ №2:

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

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