OR
とAND
の予約語をpredicateFormat
に置き換えることはできますか?+ [NSPredicate predicateWithFormat]代替予約語
私が試した:
NSString *andOr = (isAnd ? @"AND" : @"OR"); // isAnd is a BOOL variable
NSPredicate *predicate = [NSPredicate predicateWithFormat:
@"firstName == %@ %K lastName == %@",
user.firstName, andOr, user.lastName];
をしかし、私は得た:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException',
reason: 'Unable to parse the format string "firstName == %@ %K lastName == %@"
私は%s
を試してみました(とも%S
)の代わりに%K
のが、同じ例外が発生しました。
私の現在の解決策は、predicateFormat
を別途作成することです。
NSString *predicateFormat = [NSString stringWithFormat:
@"firstName == %%@ %@ lastName == %%@", andOr];
NSPredicate *predicate = [NSPredicate predicateWithFormat:predicateFormat,
user.firstName, user.lastName];
しかし、これは別にpredicateFormat
を作成せずに行うことができる場合、私は思っていました。