NSPredicate 如何测试一个值是不是包含其他两个值之一?

Posted

技术标签:

【中文标题】NSPredicate 如何测试一个值是不是包含其他两个值之一?【英文标题】:How can an NSPredicate test that a value contains one of two other values?NSPredicate 如何测试一个值是否包含其他两个值之一? 【发布时间】:2017-11-23 00:36:16 【问题描述】:

我正在尝试写一个 NSPredicate 来表达:“如果 uid 包含 myID OR targetUser”

但是,无论我尝试什么,它似乎都不想工作。如何编辑下面的行以执行上述操作?

我当前的代码:

 NSPredicate *p3 = [NSPredicate predicateWithFormat:@"uid contains[cd] %@", myID];

我尝试了以下,但没有骰子:

NSPredicate *p3 = [NSPredicate predicateWithFormat:@"uid contains[cd] %@ OR contains[cd] %@", myID, targetUser];

【问题讨论】:

如果你写在“代码”而不是谓词中,你会写if ([uid containsCD:myID] || (uid containsCD:targetUser])而不是if ([uid containsCD:myID || targetUser]),其中containsCD:相当于contains[cd]。谓词的逻辑相同。 【参考方案1】:

NSPredicate *p3 = [NSPredicate predicateWithFormat:@"(uid contains[cd] %@) OR (uid contains[cd] %@)", myID, targetUser];

【讨论】:

全行好吗?不能在我的当前行中使用弯括号? @Brittany 你的意思是?【参考方案2】:

试试这个:

NSPredicate *predicate=[NSPredicate predicateWithFormat:@"uid contains[cd] %@ OR uid contains[cd] %@", myID, targetUser];

【讨论】:

以上是关于NSPredicate 如何测试一个值是不是包含其他两个值之一?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用数组创建 NSPredicate 包含元素

使用 NSPredicate 来判断 NSSet 是不是包含来自另一个 NSSet 的对象 [重复]

使用 NSPredicate 获取一对多关系值

NSPredicate:如何将字符串视为数字?

使用 NSPredicate 过滤包含字典的数组数组

NSPredicate'运算符'LIKE'不支持int类型'