Ios 具有获取NSString条件的宏

Ios 具有获取NSString条件的宏,ios,macros,nsstring,conditional-statements,Ios,Macros,Nsstring,Conditional Statements,我正在尝试创建一个宏,它将根据某些条件成为字符串。 目标是检测应用程序运行的设备类型(iPhone、iPhone视网膜、iPad或iPad视网膜) 以下是我的尝试: #define BEST_PICTURE_SIZE_KEY \ if([[UIScreen mainScreen] respondsToSelector:@selector(scale)] && [[UIScreen mainScreen] scale]==2.0) \ (UI_USER_INTERFACE_

我正在尝试创建一个宏,它将根据某些条件成为字符串。 目标是检测应用程序运行的设备类型(iPhone、iPhone视网膜、iPad或iPad视网膜)

以下是我的尝试:

#define BEST_PICTURE_SIZE_KEY \
if([[UIScreen mainScreen] respondsToSelector:@selector(scale)] && [[UIScreen mainScreen] scale]==2.0) \
    (UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPhone)?@"LARGE":@"HUGE" \
else \
    (UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPhone)?@"BIG":@"LARGE"
但当我尝试使用它时,会出现错误:

if([lc_classified.photo objectForKey:BEST_PICTURE_SIZE_KEY])
[lc_urlArray addObject:[NSString stringWithFormat:@"%@%@",appdelegate.initObject.imgPrefix,[lc_classified.photo objectForKey:BEST_PICTURE_SIZE_KEY]]];

有什么想法吗?谢谢

您可以尝试将其重新格式化为:

#define BEST_PICTURE_SIZE_KEY \
(([[UIScreen mainScreen] respondsToSelector:@selector(scale)] && [[UIScreen mainScreen] scale]==2.0) ? \
(UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPhone)?@"LARGE":@"HUGE" \
: \
(UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPhone)?@"BIG":@"LARGE")

好像有用。

是的,谢谢。似乎条件只能是内联的。