重新使用NSPredicate替换新的变量

时间:2011-10-10 04:28:38

标签: cocoa core-data nspredicate

我可以将NSPredicate重用于新的变量替代品吗?我的NSPredicate非常简单:

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

userID是在运行时生成的,具有不同的值,现在对于我需要创建NSPredicate的每个userID。那么我可以重用我的NSPredicate吗?

1 个答案:

答案 0 :(得分:20)

是的,您可以使用变量执行此操作:

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

将谓词保存在某处,然后在需要实际开始过滤内容时执行此操作:

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

这是重用谓词的一种更有效的方法,因为解析格式字符串(可能非常昂贵)只发生一次。