gpt4 book ai didi

ios - 两个 NSNumber 数组的 NSPredicate

转载 作者:行者123 更新时间:2023-11-28 18:36:54 25 4
gpt4 key购买 nike

我在为我的搜索功能编写谓词时遇到了一些困难,我认为您可以提供帮助。所以基本上我有两个 NSNumbers 数组。我希望我的谓词满足以下条件:

If a number's integerValue in array A matches any integerValue in array B.

我不想为此解决方案使用任何类型的循环。这是我目前所拥有的

ANY integerValue == ANY //how do I pass the entire array here and ask for the integerValue of each member? 

最佳答案

ANY 运算符将处理它。

因为从你的问题中很难说出哪个数组是正常谓词用语中的“self”,所以我将在没有 self 的情况下写它:

NSArray *arrayA = @[@2, @3, @7];
NSArray *arrayB = @[@2, @4, @9];

NSPredicate *pred = [NSPredicate predicateWithFormat: @"ANY %@ IN %@", arrayA, arrayB];

由于缺少“self”,因此必须使用 nil 作为对象对其进行评估,但这工作正常:

BOOL matched = [pred evaluateWithObject: nil];

如果你喜欢在谓词中有一个“self”,你可以直接输入:

NSPredicate *pred = [NSPredicate predicateWithFormat: @"ANY self IN %@", arrayB];
BOOL matched = [pred evaluateWithObject: arrayA];

结果是一样的。

一个小概念评论

如果两个数组中都包含任何整数,则上述谓词的计算结果为真,这就是我阅读您的问题的方式。

这意味着,从概念上讲,您似乎在测试两组数字是否相互交叉。 NSSet 的方法 intersectsSet: 会检查这一点,因此进行测试的另一种方法是将数字保持为集合并测试交集:

matched = [setA intersectsSet: setB];

关于ios - 两个 NSNumber 数组的 NSPredicate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17150697/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com