После просмотра сгенерированных SQL-запросов показалось, что TIMESTAMP оценивается как строка, а не как целое число.Это объясняет, почему мой предикат не работал.Я подтвердил это, выполнив следующий запрос SQL к базе данных SQLite, которую я использую для предварительного заполнения Core Data.
SELECT DISTINCT typeof(ZSTARTTIME) FROM ZMATCH;
Это показало, что поле TIMESTAMP было типа BLOB!
Добавление «+0» к моему предикату, чтобы атрибут startTime оценивался как целое число, устранило проблему.Однако это казалось неприятным решением.Кроме того, хранение дат в виде блобов, скорее всего, вызовет проблемы в будущем.Поэтому я вернулся и заново заполнил базу данных SQLite с нуля, убедившись, что TIMESTAMP были вставлены в виде целых чисел, а не строк.Теперь все работает нормально.
Однако это означает, что мне придется проделать дополнительную работу со следующим обновлением приложения, потому что я должен убедиться, что обновление перезаписывает старую базу данных SQLite вПапка документов с новым БД.Есть ли простой способ сделать это?Стоит ли смотреть на миграцию хранилища Core Data ??