Является ли LeadID int свойством случайно?Я просто столкнулся с этой же проблемой, создавая предикат, в котором я проверяю, содержит ли одно или несколько свойств поисковый термин.Это работало в большинстве случаев времени, но время от времени происходило сбои с ошибками, как у вас.
Проблема заключалась в том, что все свойства, которые я проверял, были строками, кроме одного.Когда я удалил это свойство из предиката, все работало нормально.
Я подозреваю, 10076173 - это значение int LeadID для некоторого объекта в вашей базе данных.Похоже, что Core Data обычно преобразует int в строку, как вы ожидаете, но иногда это не так, и именно тогда происходит ошибка.Оператор CONTAINS не имеет смысла для целого числа, и он вылетает.
В качестве дополнительного доказательства я попытался изменить предикат для использования LIKE вместо СОДЕРЖИТ и я получил сообщение об ошибке, которое, наконец, сообщило мне о происходящем.Предикат был
itemNumber LIKE "* test *" OR модель LIKE "* test *" OR productDescription LIKE "* test *" [..snip ..]
и исключение было
'Невозможно выполнить сопоставление регулярных выражений для объекта 1008.'
В тот момент, когда я понял, 1008 выглядело знакомо ... как itemNumberэто Int32.
Что касается основных данных, то, как правило, но не всегда, при использовании оператора CONTAINS свойство int преобразуется в строку, я не знаю.Но я знаю, что предикат работал нормально, пока контекст не сохранил несохраненные изменения, в частности, когда было изменено свойство отношения объекта ко многим.