现在我有一个过滤器类,例如:
@interface Filter:NSObject {
NSString *a,
NSString *b;
BOOL aisset;
BOOL bisset;
}
我有一个从核心数据中获取对象的功能,例如:
(NSArray *)findObjs:(Filter *)filter;
如何实现这个功能?对于这种情况,我知道答案:
...
if (!aisset && !bisset) {
}
else if (aisset && !bisset) {
predicate = [NSPredicate predicateWithFormat:@"a==%@", a];
}
else if (!aisset && bisset) {
predicate = [NSPredicate predicateWithFormat:@"b==%@", b];
}
else if (aisset && bisset) {
predicate = [NSPredicate predicateWithFormat:@"a==%@ AND b==%@", a, b];
}
...
但是如何处理三个变量,例如a,b,c?
我尝试过这种方式:
...
NSString *predicateStr = @"";
if (aisset) ...
if (bisset) ...
if (cisset) ...
predicate = [NSPredicate predicateWithFormat:@"%@", predicateStr];
...
但是如果我使用这段代码运行,我会得到一个错误:'Unable to parse the format string "%@"'。