在#define值中使用BOOLEAN表达式

时间:2015-03-09 16:41:36

标签: ios c-preprocessor boolean-expression

我通常定义我的常量#define kIamAconstant,我的api端点就像这样的常量。现在我的项目要求我有一个切换,在两个不同的端点之间进行切换以进行测试。我有成千上万行代码,而不是通过所有代码并更改它,我想知道有没有办法在常量中使用布尔表达式。我尝试了这个(下面)并记录它,但当我尝试登录时它会显示Expected expression

#define kIsLiveEnvironment [IICore isLiveEnvironment]
#define kII_URL  if(kIsLiveEnvironment){@"FirstURL" }else{@"SecondURL"};

然后在我的视图控制器中我尝试记录这个:

 NSLog(@"IS Live environment %@ so use url %@",kIsLiveEnvironment,kII_URL);

IICore isLiveEnvironment如下:

+(void)isLiveEnvironment{
[[NSUserDefaults standardUserDefaults] boolForKey:@"isLive"];
}

非常感谢任何帮助:)

2 个答案:

答案 0 :(得分:2)

您的代码变为:

NSLog(@"IS Live environment %@ so use url %@",
    [IICore isLiveEnvironment],
    if([IICore isLiveEnvironment]){@"FirstURL" }else{@"SecondURL"};
);

这就是你有错误的原因。

kII_URL更改为:

#define kII_URL ((kIsLiveEnvironment) ? @"FirstURL" : @"SecondURL")

答案 1 :(得分:1)

我猜问题是

#define kII_URL  if(kIsLiveEnvironment){@"FirstURL" }else{@"SecondURL"};

你有没有尝试过:

#define kII_URL  ((kIsLiveEnvironment) ? @"FirstURL" : @"SecondURL")