在多行上分解长格式化的NSString

Sab*_*bin 38 iphone cocoa objective-c 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"];
Run Code Online (Sandbox Code Playgroud)

在Xcode或任何代码编辑器中,是否可以避免使用非常长的字符串,必须通过在编辑器中滚动它来读取?

有没有办法把它分成多行?我发现如果我尝试这样做,代码将无法编译,因为编译器到达行的末尾并且没有看到"字符串的右引号().

有没有人知道这方面的方法?

Joe*_*Joe 90

就在这里.编译器会为您连接相邻的字符串.

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);
Run Code Online (Sandbox Code Playgroud)

  • @Seamus代码经过测试并按照发布的方式工作,不需要编辑.只要@在第一行,它就可以在每一行上与@一起使用.请参阅http://www.cocoadev.com/index.pl?NSString中的示例 (3认同)
  • @XJones根据@Joe answere,它在字符串的开头只编译和打印了1 @. (2认同)

mat*_*atm 15

这是一个有趣的功能,而不是一个有用的答案,但......

    // your code goes with that indentation (1 tab = 4 spaces)
    NSString *myString = @"first line\
second line\
third line\
...\
last line";
    // next lines of codes
Run Code Online (Sandbox Code Playgroud)

但你真的要记住缩进,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
Run Code Online (Sandbox Code Playgroud)

这会给:first lineXsecond lineXthird lineX...Xlast line",那些令人讨厌的X将被4个空格所取代(在这种情况下,制表师有4个空格,我无法正确格式化,对不起).因此,额外的间距可以真正阻止您获得预期的结果.