Можно ли заменить зарезервированные слова, в частности OR
и AND
, на 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
отдельно.