2009-06-29 17 views
4

我需要幫助。 爲什麼這不起作用:iPhone:格式化字符串問題(目標C)

NSProcessInfo *process = [NSProcessInfo processInfo]; 
NSString *processName = [process processName]; 
int processId = [process processIdentifier]; 
NSString *processString = [NSString stringWithFormat:@"Process Name: @% Process ID: %f", processName, processId]; 
NSLog(processString); 

但這:

NSLog(@"Process Name: %@ Process ID: %d", [[NSProcessInfo processInfo] processName], [[NSProcessInfo processInfo] processIdentifier]); 

回答

14
  • %@:輸出對象的字符串形式(包括NSString)。
  • %f:輸出浮點數(float
  • %d:輸出的整數倍(int
  • %x:一些

你原來NSString:stringWithFormat:有兩個問題輸出十六進制形式:

  1. @%應該是%@ t o輸出一個NSString。
  2. 您使用%f而不是%d來輸出一個int。
2

你的格式字符串是壞:的ProcessID是一個i​​nt而不是浮動。

使用-Wformat來擺脫這種錯誤。

+0

哦!謝謝 如何在xcode中啓用-wformat? – Devoted 2009-06-29 09:41:33

+0

在目標的設置窗格中有一個設置。我不記得名字,但我想你會通過在該窗格中搜索來輕鬆找到它。 – 2009-06-29 11:29:55

0

你的格式包含錯誤,你已經將@%換了[NSString stringWithFormat:]。它將適用於日誌,但不適用於字符串創建,因爲格式爲%@而不是@%