将Objective-C #define宏转换为Swift

时间:2016-01-27 17:42:56

标签: ios objective-c swift macros

我在Objective-C项目中有一个宏,它缩短了长引用的输入:

#define CURRENT_USER DataConnector.sharedInstance.currentUser

这允许我通过CURRENT_USER代替^来引用当前用户。

我如何在Swift中复制它?我试过了this suggested let solution,但这看起来实际上创建了一个不可变的变量。是否恰当使用var?如果#define改为:

,该怎么办?
#define CONST_STR = static NSString* const

...可以像:

一样使用
CONST_STR kXXSomeConstant = @"a constant string";

可以以同样的方式使用Swift let(或var?)解决方案吗?

2 个答案:

答案 0 :(得分:3)

我的理解是Swift编译器不使用C预处理器,因此根本不可能使用宏。和其他评论者一样,我建议找一种更快捷的方式来处理这种情况。正如@ originaluser2在他/她的评论中指出的那样,宏有一个严重的缺点。 (更不用说在Swift中完全不受支持的致命缺陷。)

答案 1 :(得分:1)

您应该能够将var与自定义getter一起使用:

var CURRENT_USER : User {
    return DataConnector.sharedInstance.currentUser
}