Как разбить строку в Objective-C, не нарушая код - PullRequest
4 голосов
/ 26 февраля 2011

XCode выдает всевозможные ошибки, когда я вставляю разрыв строки в строку.Например, это терпит неудачу:

if (newMaximumNumberOfSides > 12) {
    NSLog(@"Invalid maximum number of sides: %i is greater than 
            the maximum of 12 allowed.", newMaximumNumberOfSides);
}

Но это работает:

if (newMaximumNumberOfSides > 12) {
    NSLog(@"Invalid maximum number of sides: %i is greater than the maximum of 12 allowed.", 
          newMaximumNumberOfSides);
}

Я бы предпочел первое, потому что это выглядит чище (короткие строки), но код ломается.Какой лучший способ справиться с этим?(Подзапрос: упоминается ли это в каком-либо из руководств по синтаксису? Я искал во всех своих книгах «разрыв строки», но безрезультатно.)

Ответы [ 3 ]

8 голосов
/ 26 февраля 2011

Все это должно работать:

NSString *s = @"this" \
        @" is a" \
        @" very long" \
        @" string!";

    NSLog(s);


    NSString *s1 = @"this" 
        @" is a" 
        @" very long" 
        @" string!";

    NSLog(s1);

    NSString *s2 = @"this"
        " is a"
        " very long"
        " string!";

    NSLog(s2);

    NSString *s3 = @"this\
 is a\
 very long\
 string!";

    NSLog(s3);
8 голосов
/ 26 февраля 2011
if (newMaximumNumberOfSides > 12) {
    NSLog(@"Invalid maximum number of sides: %i is greater than " 
            "the maximum of 12 allowed.", newMaximumNumberOfSides);
}
2 голосов
/ 26 февраля 2011

Строковые литералы в C могут не содержать символов новой строки.Процитируем http://gcc.gnu.org/onlinedocs/cpp/Tokenization.html:

Никакой строковый литерал не может выходить за пределы конца строки.Более старые версии GCC допускали многострочные строковые константы.Вместо этого можно использовать непрерывные строки или конкатенацию строковых констант

В других уже приведенных ответах приведены примеры как непрерывных строк, так и конкатенации строк.

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