gpt4 book ai didi

ios - 使用 NSPredicate 在 NSDate 之间进行过滤

转载 作者:行者123 更新时间:2023-11-29 02:20:34 25 4
gpt4 key购买 nike

我的核心数据模型的简化版本如下所示 Core Data Model我正在尝试过滤一组满足以下条件“type”==“DIVIDEND_TYPE”且“date”介于“startDate”和“endDate”之间的 Assets 。

我的谓词看起来像这样

 NSPredicate *myPredicate = [NSPredicate predicateWithFormat:
@"ANY transactions.type == %@ AND ANY transactions.date >= %@ AND ANY transactions.date <= %@", DIVIDEND_TYPE, startDate, endDate];

NSSet *filteredSet = [self.portfolio.assets filteredSetUsingPredicate:myPredicate];

这个谓词似乎尊重开始日期和类型,但不尊重结束日期。 filteredSet 始终包括包含日期超过结束日期的交易的 Assets 。

我做错了什么?

最佳答案

每个 ANY 子句的条件都得到独立测试,因此如果 Asset 有任何正确类型的交易,以及日期在 startDate 之后的任何交易,等等 - 但它可能是不同的交易满足每个测试。请改用 SUBQUERY:它允许您测试每个事务的多个属性:

NSPredicate *myPredicate = [NSPredicate predicateWithFormat:@"SUBQUERY(transactions, $T, $T.type == %@ AND $T.date >= %@ AND $T.date <= %@).@count > 0", DIVIDEND_TYPE, startDate, endDate];

关于ios - 使用 NSPredicate 在 NSDate 之间进行过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28198458/

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