在Swift中使用C宏,当初始化程序不是编译时常量时

时间:2017-08-21 17:57:59

标签: objective-c swift

我有一个Strings.h文件,其中包含许多条目:

#define HIDE_WORD NSLocalizedString(@"Hide", @"the word on a button to Hide a screen that is showing")

如果我无法将这些宏提供给Swift,或者如果我无法使这些宏可用,那么该怎样才能使这些宏可用?在类方法中包装我希望在Swift中使用的宏的最佳方法是什么?

This answer在我的案例中不起作用,因为NSLocalizedString(@" Foo",@" Bar")不是常数。

1 个答案:

答案 0 :(得分:0)

由于没有自动方式将这些字符串放入Swift而不编辑代码,因此您可以将所有数据直接放入Swift。

为此采用正则表达式方法怎么样?

搜索

\#define (\w*) NSLocalizedString\(@"([^"]*)", *@"([^"]*)"\)

替换

let $1 = NSLocalizedString\("$2", comment: "$3"\)