2015-02-06 34 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

相关问题