Initializer元素不是编译时常量



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

NSString * ALERT_OK = NSLocalizedString(@"Ok",@"Ok");

之后,当我试图编译时,我收到了以下错误

Initialiser element is not a compile time constant

如何调试?

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

相反,使用:

 #define ALERT_OK NSLocalizedString(@"Ok",@"Ok");

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

最新更新