Повторно использовать NSPredicate для замены новой переменной - PullRequest
7 голосов
/ 10 октября 2011

Можно ли повторно использовать NSPredicate для замены новой переменной? Мой NSPredicate довольно прост:

NSPredicate *userPredicate = [NSPredicate predicateWithFormat:@"id == %@",userID];

ИД пользователя генерируется во время выполнения с другим значением, сейчас для каждого ИД пользователя, который мне нужен для создания NSPredicate Так возможно ли я повторно использовать свой NSPredicate?

1 Ответ

20 голосов
/ 10 октября 2011

Да, вы можете сделать это с помощью переменной:

NSPredicate *userPredicate = [NSPredicate predicateWithFormat:@"id == $user"];

Сохраните этот предикат где-нибудь, а затем сделайте это, когда вам действительно нужно начать фильтрацию:

NSDictionary *sub = [NSDictionary dictionaryWithObject:user forKey:@"user"];
NSPredicate *filter = [userPredicate predicateWithSubstitutionVariables:sub];

Это гораздо более эффективный способ повторного использования предиката, потому что синтаксический анализ строки формата (который может быть довольно дорогим) происходит только один раз.

...