如何在不破坏代码的情况下在Objective-C中拆分字符串

时间:2011-02-25 23:38:18

标签: iphone objective-c xcode ios

当我在字符串中插入换行符时,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 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:8)

所有这些都应该有效:

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

答案 2 :(得分:2)

C中的字符串文字可能不包含换行符。引用http://gcc.gnu.org/onlinedocs/cpp/Tokenization.html

  

没有字符串文字可以延伸过   一行结束。较旧版本的GCC   接受多行字符串常量。   你可以改用续行,   或字符串常量连接

已经给出的其他答案给出了连续行和字符串连接的示例。