Ошибка Realm: недопустимое значение, ожидающее int и получение: 0

Я использую Realm с Swift для запроса, но получаю эту ошибку:

Завершение приложения из-за неотображенного исключения "Недопустимое значение", причина: "Ожидаемый объект типа int для свойства" id "на объекте типа" JournalEntryLine ", но полученный: 0 '

Класс JournalEntryLine имеет свойство (Int) с именем id.

Код, который я использую:

for item in idSet
    let idQuery = realm.objects(JournalEntryLine).filter("id = '\(item)' AND type = 'Debit'")
}

idSet - это множество, содержащее целые числа 0 и далее. Я подтвердил, что по крайней мере [0] всегда находится в наборе перед запуском этого запроса.

Почему я получаю эту ошибку?

Ответы

Ответ 1

-Edit -

  • Если вы используете: id = 'YOUR_VAR_OR VALUE' = > означает, что идентификатор Строка (Ex: id = '4')

  • Но если вы используете: id = YOUR_VAR_OR VALUE = > означает, что id является целым числом (Ex: id = 4)

NB: Поэтому, когда ваш id является целым числом, не используйте кавычки ''


Попробуйте следующее:

let idQuery = realm.objects(JournalEntryLine).filter("id = \(item) AND type = 'Debit'")

Преобразование id = '\ (item)' в id =\(item), потому что id является Integer, если вы используете кавычки, il рассмотрит id как строка.

Не забывайте голосовать Up, если это вам поможет.:)

Ответ 2

Также это помогло мне:

let matchedMovieID = realm.objects(MovieID.self).filter("movieID == %@", idString).first

Swift 4.2, XCode 10.0, Realm 3.14.1