gpt4 book ai didi

ios - 核心数据希望我的谓词参数为NSNumber和NSDate

转载 作者:行者123 更新时间:2023-12-01 16:50:53 26 4
gpt4 key购买 nike

我有一个带有多个UpcomingDate的事件的模型,每个事件的属性日期类型为(NS)Date。我正在建立一个提取请求,以仅检索在两个给定日期之间具有即将到来的日期的事件。问题是,无论我如何在谓词中格式化输入日期,都会出现异常。似乎Core Data希望我的谓词参数既是NSDate也是NSNumbers。

当我通过@([date timeIntervalSinceReferenceDate])传递NSNumbers时,会看到以下内容:

predicate: 0 != SUBQUERY(upcomingDates, $upcomingDate, $upcomingDate.date >= 387270000 AND $upcomingDate.date <= 387356400).@count
-[__NSCFNumber timeIntervalSinceReferenceDate]: unrecognized selector sent to instance 0x865a0b0

当我使用简单的旧NSDates进行直观的搜索时,会看到以下内容:
predicate: 0 != SUBQUERY(upcomingDates, $upcomingDate, $upcomingDate.date >= CAST(387270000.000000, "NSDate") AND $upcomingDate.date <= CAST(387356400.000000, "NSDate")).@count
-[__NSDate objCType]: unrecognized selector sent to instance 0x86c6450

打印出接收到无法识别的选择器的对象,它始终是谓词参数的第一个。

我已经尽我最大的能力验证了即将到来的date.date实际上是一个NSDate(这是模型指定的,但是我也查看了它们创建时传递的内容)。我试过使用CAST到NSDates和NSNumbers的每个排列。我将谓词分解为最简单的情况,这实际上只是意味着删除ANDed子查询谓词之一。我很沮丧

预计到达时间:
谓词如下。
NSNumbers:
[NSPredicate predicateWithFormat:@"0 != (SUBQUERY(upcomingDates, $upcomingDate, ($upcomingDate.date >= %@) AND ($upcomingDate.date <= %@))).@count", @([self.timeFilterRange[0] timeIntervalSinceReferenceDate]), @([self.timeFilterRange[1] timeIntervalSinceReferenceDate])]

NSDates:
[NSPredicate predicateWithFormat:@"0 != (SUBQUERY(upcomingDates, $upcomingDate, ($upcomingDate.date >= %@) AND ($upcomingDate.date <= %@))).@count", self.timeFilterRange[0] , self.timeFilterRange[1] ]

最佳答案

奇怪的是,子查询似乎是问题所在。当我使用这个新谓词时,我可能会或可能不会获得正确的结果(我的设置是如此难以立即测试),但至少我没有崩溃。

NSArray *times = @[@([self.timeFilterRange[0] timeIntervalSinceReferenceDate]),
@([self.timeFilterRange[1] timeIntervalSinceReferenceDate])];
[NSPredicate predicateWithFormat:@"ANY upcomingDates.date BETWEEN %@", times]

关于ios - 核心数据希望我的谓词参数为NSNumber和NSDate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15938196/

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