开发者

How to split a string in Objective-C without breaking the code

Xcode throws all sorts of errors when I insert a line break into a string. E.g., this fails:

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

But this works:

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

I'd prefer the former because i开发者_Go百科t's cleaner to look at (shorter lines), but the code breaks. What's the best way to deal with this? (Subquestion: is this referenced in any of the syntax guides? I searched all my books for "line break" to no effect.)


All these should work:

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


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


String literals in C may not contain newlines. To quote http://gcc.gnu.org/onlinedocs/cpp/Tokenization.html:

No string literal may extend past the end of a line. Older versions of GCC accepted multi-line string constants. You may use continued lines instead, or string constant concatenation

The other answers already given give examples of both continued lines and string concatenation.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜