Initialiser元素不是编译时常量

use*_*878 3 iphone ios4 ios ios5

在我的常量文件中,我已经包含以下行

NSString * ALERT_OK = NSLocalizedString(@"Ok",@"Ok");
Run Code Online (Sandbox Code Playgroud)

在此之后,当我尝试编译时,我收到以下错误

Initialiser element is not a compile time constant
Run Code Online (Sandbox Code Playgroud)

请帮帮我

lna*_*ger 5

问题是NSLocalizedString是一个函数,它根据语言返回不同的值.它不是一个常数,可以在系统运行之前计算出来.

相反,使用:

 #define ALERT_OK NSLocalizedString(@"Ok",@"Ok");
Run Code Online (Sandbox Code Playgroud)

它现在只需用函数替换ALERT_OK就可以了.(请注意,您应该对所有这样的全局值使用某种前缀,这样您就不会意外地创建在其他地方使用相同名称的内容.)