具有获取NSString的条件的宏

时间:2013-06-14 16:10:32

标签: 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_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]]];

有什么想法吗?感谢

1 个答案:

答案 0 :(得分:1)

您可以尝试重新格式化:

#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")

似乎有效。