gpt4 book ai didi

objective-c - 将 NSPredicate 中的子查询与 valueForKeyPath 组合时出错

转载 作者:行者123 更新时间:2023-11-29 04:31:38 25 4
gpt4 key购买 nike

我将时间段存储在核心数据中。每个时间段都有一个DateTime名为 EndDate 的属性。我正在尝试获取最大结束日期,该日期在指定日期 ( < ) 之前。

Financial period

这就是我使用子查询和 ValueForKeyPath 进行编码的方式:

NSString *keyPath = [NSString stringWithFormat:@"SUBQUERY(SELF, $x, $x.EndDate < %@).@max.EndDate", date];
IBFinPeriod *periodBeforeCurrentDate = [self.finperiod valueForKeyPath:keyPath];

但是,运行此代码时,我收到运行时错误:the entity IBFinPeriod is not key value coding-compliant for the key "SUBQUERY(SELF, $x, $x".'

我的代码有什么问题吗?我需要以不同的方式指定子查询吗?

感谢您的帮助!!

最佳答案

您可以使用将 fetchLimit 设置为 1 并使用降序排序描述符的提取请求。

如果您坚持使用 valueForKeyPath:,我将首先使用 filteredArrayUsingPredicate: 过滤结果(使用直接谓词选择日期早于您的 date),然后简单地使用 @"@max.EndDate" 作为关键路径。

如果您需要整个对象而不仅仅是日期,只需对集合进行排序即可:

NSSet *periodsBeforeCurrentDate = [self.finperiod 
filteredSetUsingPredicate:[NSPredicate predicateWithFormat:
@"EndDate < %@", date]];
if (periodsBeforeCurrentDate.count) {
*sort = [NSSortDescriptor sortDescriptorWithKey:@"EndDate" ascending:NO];
NSArray *sortDescriptors = [NSArray arrayWithObject:sort];
IBFinPeriod *lastPeriodBeforeCurrentDate =[[periodsBeforeCurrentDate
sortedArrayUsingDescriptors:sortDescriptors] objectAtIndex:0];
}

在我看来,直接获取会更容易。

关于objective-c - 将 NSPredicate 中的子查询与 valueForKeyPath 组合时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11666811/

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