Initialiser元素不是编译时间常数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Initialiser元素不是编译时间常数相关的知识,希望对你有一定的参考价值。
在我的常量文件中,我包括以下行
NSString * ALERT_OK = NSLocalizedString(@"Ok",@"Ok");
此后,当我尝试编译时,我收到以下错误
Initialiser element is not a compile time constant
我该如何调试?
答案
问题在于,NSLocalizedString是根据语言返回不同值的函数。在系统运行之前,它不是一个常数。
相反,使用:
#define ALERT_OK NSLocalizedString(@"Ok",@"Ok");
并且现在它将简单地将ALERT_OK替换为该函数,就可以了。 (请注意,您应该对所有此类全局值使用某种前缀,以免意外创建其他地方使用相同名称的东西。)
以上是关于Initialiser元素不是编译时间常数的主要内容,如果未能解决你的问题,请参考以下文章