【问题标题】:Break up long formatted NSString over multiple lines将长格式的 NSString 拆分为多行
【发布时间】:2011-04-13 15:36:09
【问题描述】:

鉴于以下 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 或任何代码编辑器中,是否有可能避免出现必须通过在编辑器中滚动来读取的非常长的字符串?

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

有人知道解决这个问题的方法吗?

【问题讨论】:

  • 嘿,你错过了传递 %f 浮点值@end。 Avg Speed MPH: %f \n Avg Speed KPH:\n................即使这种方式也对我有用

标签: iphone objective-c cocoa nsstring


【解决方案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);

【讨论】:

  • 确保在所有引用的字符串之前添加@
  • @XJones 根据@Joe answere,它在字符串开头仅使用 1 个 @ 编译和打印。
  • @Seamus 代码已经过测试并按发布的方式工作,无需编辑。只要@ 在第一行,它就可以在每一行使用或不使用@。请参阅此处的示例cocoadev.com/index.pl?NSString
  • 我只是习惯于在所有行上添加@,但是是的,我发现没有它也可以工作。为@Joe +1。
  • 这在控制台中有效,但在 tableview 的 sectionIndexTitle 中无效
【解决方案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",其中那些讨厌的 X 将被 4 个空格替换(在这种情况下,制表符有 4 个空格,我无法获得正确的格式,抱歉)。因此,额外的间距确实会阻止您获得预期的结果。

【讨论】:

    猜你喜欢
    • 2011-04-18
    • 1970-01-01
    • 2014-05-18
    • 1970-01-01
    • 2012-06-08
    • 2022-01-15
    • 1970-01-01
    • 2017-09-27
    • 1970-01-01
    相关资源
    最近更新 更多