制作一个宏:如何正确嵌入字符串

时间:2016-04-05 07:08:54

标签: objective-c macros

#define SDNSPredicate(key,value) \
    [NSPredicate predicateWithFormat:@"#key == %@",value];

当我使用SDNSPredicate(@"hCName",@"ccc")时,我希望hCName == "ccc"但它会变为key == "ccc"

如何正确使用?

2 个答案:

答案 0 :(得分:5)

  

如何做到对不对?

使用功能。 Macros are evil

static inline NSPredicate *SDNSPredicate(NSString *key, NSString *value) {
    return [NSPredicate predicateWithFormat:@"%@ == %@", key, value];
}

答案 1 :(得分:2)

解决方案:

#define SDNSPredicate(key,value) \
[NSPredicate predicateWithFormat:@"%K == %@",key,value];