我在,如果第二個參數作爲變量傳遞工作正常特定郵件使用NSLocalizedString
,但失敗,Use of undeclared identifier 'NSLocalizedString'
和Too many arguments provided to function-like macro invocation
如果第二個參數被寫入完全一樣的變量被設置。我有使用變量的工作代碼,這很好,我只是想了解在其他情況下如何避免它的原因。NSLocalizedString - 使用未聲明的標識符問題
通過以下聲明:
NSString *branchTitle = [branchDictionary objectForKey:@"Title"];
NSString *localString = [NSMutableString stringWithFormat:@"%@ node title", branchTitle];
這工作得很好,沒有任何錯誤:
[navItem setTitle:NSLocalizedString(branchTitle, localString)];
...但是這,這似乎等同於我,失敗,上面提到的錯誤:
[navItem setTitle:NSLocalizedString(branchTitle, [NSMutableString stringWithFormat:@"%@ node title", branchTitle])];
在這裏和其他地方搜索我還沒有找到解釋。我通讀了各種錯誤消息和各種問題的點擊次數,但沒有將它們綁定在一起。我發現第二條錯誤消息的含義可能與clang和聲明中逗號的數量有關,表明即使額外逗號在NSMutableString
消息中,但它仍被NSLocalizedString
視爲額外參數。這有任何意義嗎?
對於這個問題不重要,但是該聲明旨在根據從字典中提取的英文版本來設置導航欄標題的本地化版本,該版本因不同視圖而異。 NSMutableString
部分基於英文標題定義了本地化的評論。
編輯:根據接受的答案解決這個問題後,我發現了另一個相關的問題。 localString
的聲明產生了"Unused variable"
編譯器警告,儘管它明顯被使用。這也是由於它在一個C宏和完整性,我在這裏添加一個鏈接到一個相關的帖子,關於抑制該警告:How can I get rid of an 「unused variable」 warning in Xcode
不錯,只需添加一組圓括號即可修復它。 NSLocalizedString是我在Objective-C中有意識地使用的第一個C宏,所以當別人滾動時,這是一個很好的提示。謝謝! –
很高興有幫助! – sergio