2011-04-13 39 views
38

鑑於下面的行的Objective-C代碼:分手長格式的NSString多行

[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中或任何代碼編輯器,是有可能避免具有必須由可讀取的很長的字符串在編輯器中滾動瀏覽它?

有沒有辦法把它分解成多行?我發現如果我嘗試這樣做,代碼將無法編譯,因爲編譯器到達行尾並且沒有看到字符串的結尾引號(")。

有沒有人知道解決這個問題的方法?

+0

嘿,你錯過了%f浮動值@結束。平均速度MPH:%f \ n平均速度KPH:\ n ................即使這種方式對我來說也適用 – 2011-04-13 17:21:38

回答

89

是的。編譯器會爲您連接相鄰的字符串。

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

這很完美,非常感謝。 :) – Sabobin 2011-04-13 15:42:59

+1

確保在所有帶引號的字符串前加上'@' – XJones 2011-04-13 15:51:46

+2

@XJones按照@Joe answere的說法,它在字符串的開始處僅用1 @進行編譯和打印。 – Sabobin 2011-04-13 17:01:41

14

這是不是一個有用的答案更有趣的功能,但...

// 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位在這種情況下,我不能得到正確的格式所取代,抱歉)。所以,額外的間隔可以阻止你獲得預期的結果。

+0

我寫了一個工具:http://nsstringify.nateflink .COM / – 2012-07-28 22:42:31