予約語、具体的にはOR
andAND
を?に置き換えることは可能predicateFormat
ですか?
私は試した:
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
しかし、これは個別に作成せずに実行できるのではないかと思いました。