gpt4 book ai didi

ios - NSPredicate 没有返回预期的项目

转载 作者:行者123 更新时间:2023-11-29 11:37:01 26 4
gpt4 key购买 nike

我试图在数组中查找 itemIdsize 不匹配的项。但是,以下查询不会返回 itemId 相同但 size 不同的项目。我想知道我错过了什么。

首先我按如下方式提取该项目,然后我试图找到对该项目的赞美。

NSPredicate *itemPredicate = [NSPredicate predicateWithFormat:@"(%K == %@)", kItemId, itemId];
NSPredicate *sizePredicate = [NSPredicate predicateWithFormat:@"(%K == %@)", kSize, [NSString stringWithFormat:@"%d", size]];
NSPredicate *combinedPredicate = [NSCompoundPredicate andPredicateWithSubpredicates:@[itemPredicate, sizePredicate]];
NSArray *itemInOrder = [sharedData.orderItems filteredArrayUsingPredicate:combinedPredicate];

正在尝试提取 itemInOrder免费 项目

NSPredicate *restOfOrderPredicate = [NSPredicate predicateWithFormat:@"(%K != %@)", kItemId, itemId];
NSPredicate *restSizePredicate = [NSPredicate predicateWithFormat:@"(%K != %@)", kSize, [NSString stringWithFormat:@"%d", size]];
NSPredicate *restCombinedPredicate = [NSCompoundPredicate andPredicateWithSubpredicates:@[restSizePredicate, sizePredicate]];
NSMutableArray *restOfItemsInOrder = [NSMutableArray arrayWithArray:[sharedData.orderItems filteredArrayUsingPredicate:restOfOrderPredicate]];

最佳答案

我认为这里有两个问题:

  1. 您的补充 and 谓词正在使用 sizePredicate,但我认为您希望使用 restSizePredicate

  2. 我认为您想使用 or 谓词。正如您现在拥有的那样,您会错过任何具有相同大小或相同 itemId 的内容。

另一种方法是使用获取所有对象的提取。然后使用您现有的提取来获取您想要的原始集。然后使用 Set Arithmetic 从第一个集合中删除第二个集合。

** 编辑 **

  1. 我刚刚发现 notPredicateWithSubpredicate 这可能正是您想要的:保持第一个查询和谓词不变。然后对于第二个查询,使用 notPredicateWithSubpredicate 并传入第一个查询的谓词。

关于ios - NSPredicate 没有返回预期的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48592372/

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