在目标C中使用#define并在swift类中使用

Sha*_*ram 3 xcode objective-c ios swift

#define baseUrl [NSString stringWithFormat:@"%@api/v4", MAINURL]在目标c类中定义,可以访问项目中的任何地方.但是现在我已经在退出的目标c项目中创建了swift文件,并希望在swift中访问baseurl但收到错误.

Use of unresolved identifier 'baseUrl'
Run Code Online (Sandbox Code Playgroud)

怎么解决呢?

mag*_*zbc 7

将Objective-C宏导入Swift并不总是有效.根据文件:

Swift自动导入使用#define指令声明的简单,类似常量的宏作为全局常量.当宏使用字符串表示字符串,浮点或整数值时,或者在文字或以前定义的宏之间使用+, - ,>和==等运算符时,将导入宏.

比简单常量定义更复杂的C宏在Swift中没有对应的宏.

在您的情况下,另一种方法是使用一个返回宏定义的值的函数

// .h file
#define baseUrl [NSString stringWithFormat:@"%@api/v4", MAINURL]
+ (NSString*) BaseUrl;

// .m file
+ (NSString*) BaseUrl { return baseUrl }
Run Code Online (Sandbox Code Playgroud)