如何检查宏内的条件?

时间:2016-01-08 08:43:00

标签: ios objective-c macros

我已经定义了这样一个宏,

#define SELECTED_SITE_ID (SITE_MANAGER.selectedSite.siteCollectionIdentifier)

它返回一个存储在用户默认值中的double值。

在代码中,SELECTED_SITE_ID宏正在使用超过1000个这样的地方,

int a = SELECTED_SITE_ID;
NSArray *array = [someClassObject objectAtIndex:a-1];

当我的应用首次投放时,SELECTED_SITE_ID宏返回0.0,已分配给int a;,因此a将为0。< / p>

从数组开始,我已将a-1写入0-1,这会导致崩溃问题。

我现在还不知道解决这个问题的快捷方法,因为它是在约。 1000个地方?

我的想法是什么?

  

我猜在宏内部?如果我能够检查,价值会是什么?如果它为0,那么我将明确地返回1.

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:2)

这很容易,

#define SELECTED_SITE_ID ((SITE_MANAGER.selectedSite.siteCollectionIdentifier <= 0.0) ? 1 : SITE_MANAGER.selectedSite.siteCollectionIdentifier)

答案 1 :(得分:0)

更好的方法是:

#define SELECTED_SITE_ID(SITE_MANAGER.selectedSite.siteCollectionIdentifier?:1)