web-dev-qa-db-ja.com

長い形式の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"];

Xcodeまたはその他のコードエディターでは、エディターでスクロールして読み取る必要がある非常に長い文字列を回避することはできますか?

複数の行に分割する方法はありますか?これを行おうとすると、コードがコンパイルされません。コンパイラーが行の終わりに達し、文字列の終了引用符(")が表示されないためです。

誰かがこれを回避する方法を知っていますか?

39
Sabobin

はいあります。隣接する文字列は、コンパイラによって連結されます。

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

これは便利な回答というよりも興味深い機能ですが...

_    // 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つのスペースがあり、正しいフォーマットを取得できませんでした。申し訳ありません)。そのため、間隔を広げると、期待した結果が得られなくなる可能性があります。

16
matm