objcType
- это селектор / метод NSValue и его подклассов, таких как NSNumber. Это означает, что в какой-то момент объект NSDate обрабатывается как NSValue. Скорее всего, это происходит, когда NSDate вклинивается в математическую операцию, которую он не поддерживает.
В предикате NSDate часто конвертируется в NSTimeInterval, который является двойным. Если вы зарегистрируете предикат, который у вас есть выше, дата разрешит что-то вроде этого:
CAST(335110182.022141, "NSDate") <= kickoffTime + 0 AND kickoffTime + 0 <= CAST(335110182.022141, "NSDate")
... это NSDate, который удваивается. Вот откуда твоя проблема. Я подозреваю, что это происходит потому, что анализатор предикатов не всегда может разрешить приоритет.
Вы можете решить проблему, просто:
(CAST(335110182.022141, "NSDate") <= kickoffTime + 0) AND (kickoffTime + 0 <= CAST(335110182.022141, "NSDate"))
Однако +0
абсолютно ничего не делает в предикате, кроме того, что вызывает проблемы, поэтому я бы просто потерял его.
Кстати, когда вы говорите:
Я загружаю данные из sqLite с помощью Core Data, вызывая
... это говорит о том, что вы думаете о Core Data как обёртке объекта для sqlite. Это не так, и если подумать, вы попадете в неприятности , особенно с предикатами.