これで、次のようなフィルター クラスが作成されました。
@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 などの 3 つの変数をどのように処理すればよいでしょうか。
私はこの方法を試しました:
...
NSString *predicateStr = @"";
if (aisset) ...
if (bisset) ...
if (cisset) ...
predicate = [NSPredicate predicateWithFormat:@"%@", predicateStr];
...
しかし、このコードで実行すると、「フォーマット文字列 "%@" を解析できません」というエラーが表示されます。