【问题标题】:Macro with conditions to get a NSString具有获取 NSString 条件的宏
【发布时间】:2013-06-14 16:10:31
【问题描述】:

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

这是我的尝试:

#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]]];

有什么想法吗?谢谢

【问题讨论】:

    标签: ios macros nsstring conditional-statements


    【解决方案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")
    

    它似乎有效。

    【讨论】:

    • 好的,谢谢。似乎条件只能是内联的。
    猜你喜欢
    • 2013-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-11
    • 1970-01-01
    • 2018-07-15
    • 1970-01-01
    • 2021-12-08
    相关资源
    最近更新 更多