2015-02-06 27 views
0

我收到以下錯誤:參數不是字面字符串。有誰知道這個問題可能是什麼?文件中的壞項////控制器.m參數不是字面字符串

strAbout是一個動態字符串。

[btnBack setTitle:NSLocalizedString(strAbout, @"") forState:UIControlStateNormal]; 
+0

你能發佈你的本地化文件嗎?另外,你有沒有嘗試傳遞nill作爲第二個參數而不是@「」? – Miknash 2015-02-06 11:46:54

+0

https://medium.com/ios-apprentice/working-with-localization-905e4052b9de – 2015-02-06 12:06:04

+0

[Objective C Literals](http://clang.llvm.org/docs/ObjectiveCLiterals.html) – 2015-02-06 13:08:04

回答

2

的鍵值,並在NSLocalizedString宏觀評論必須是恆定的,這個值是使用創建密鑰表與意見作爲提示,以幫助翻譯。所以你不能擁有一個動態密鑰,因爲系統不知道你想要本地化。

另一方面,如果您需要例如文本中的數量,則可以將部分動態設置爲格式,但如果所有文本都是動態的,則最好不要使用NSLocalizedString。

這是一個NSLocalizedString的格式使用的例子:

[NSString stringWithFormat:NSLocalizedString(@"%@'s Profile", @"{User First Name}'s Profile"), user.name]; 

您可以在NSHipster article這裏也有我的例子中瞭解更多關於這一點。

+0

我被卡住了,因爲你不能根據這個在運行時動態地本地化一個字符串......你不能從表中加載密鑰,然後轉換是因爲你得到一個錯誤「文件xxx.m中的錯誤條目(line = xx):參數不是一個文字串。」 我對此很驚訝,因爲往往動態模型用於字符串表示,並且大多數人會想要本地化結果。 – delta2flat 2016-11-18 00:37:31

相關問題