重用 NSPredicate 进行新变量替换

发布于 2024-12-09 08:59:52 字数 248 浏览 0 评论 0原文

我可以重用 NSPredicate 来替换新变量吗?我的 NSPredicate 相当简单:

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

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

Can I reuse NSPredicate for new variable substitute? My NSPredicate is rather simple:

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

The userID is generated at run-time with different value, right now for each userID I need to create a NSPredicate. So is it possible I can reuse my NSPredicate ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

温馨耳语 2024-12-16 08:59:52

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

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

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

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

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

Yep, you can do this with a variable:

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

Save that predicate somewhere, then do this when you need to actually start filtering stuff:

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

This is a much more efficient way to reuse a predicate, because parsing the format string (which can be pretty expensive) only happens once.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文