我尝试通过NSString值获取宏:
示例:
#define FOO1 NSLocalizedString (@"TEXT",@"COMMENT")
#define FOO2 NSLocalizedString (@"TEXT2",@"COMMENT2")
<。>文件:
NSString *macroName = [NSString stringWithFormat:"FOO%d",1];
label.text = MACROBYNAME(macroName);
有没有办法做这样的事情?
解决方案的另一种方法是宏中的Switch-Case,如下所示:
#define FOOSELECTOR(x) Switch x
case "FOO1"
NSLocalizedString (@"TEXT",@"COMMENT")
break;
case "FOO2"
NSLocalizedString (@"TEXT2",@"COMMENT2")
break;
或类似的......任何想法?
答案 0 :(得分:0)
好的,我会咬一口,把它作为答案而不是评论:
不,这是不可能的。没有办法做你想做的事。
宏在编译期间进行评估,即在Xcode中点击cmd-b时。在运行时调用函数。这是程序运行的时间,可能是编译后的几年。
此外,你为什么要这样做?
有什么问题NSString *localizedString = NSLocalizedString (@"TEXT",@"COMMENT");
label.text = [NSString stringWithFormat:@"%@%d", localizedString, 1];