web-dev-qa-db-ja.com

レルムエラー:無効な値、intを期待し、受信:0

クエリにSwiftでレルムを使用していますが、次のエラーが発生します:

キャッチされなかった例外のためにアプリを終了しています '無効な値'、理由: 'タイプ' JournalEntryLine 'のオブジェクトのプロパティ' id 'に対してタイプintのオブジェクトが予期されていましたが、受信されました:0'

JournalEntryLineクラスには、idという名前のプロパティ(Int)があります。

私が使用しているコード:

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

idSetは、0以降の整数を含むセットです。このクエリを実行する前に、少なくとも[0]が常にセットに含まれていることを確認しました。

なぜこのエラーが発生するのですか?

26
Jared

-編集-

  • 使用する場合:id = 'YOUR_VAR_OR VALUE' =>は、idがStringであることを意味します(例:id = '4')

  • ただし、使用する場合:id = YOUR_VAR_OR VALUE =>は、idが整数であることを意味します(例:id = 4)

NB:したがって、IDが整数の場合は、引用符を使用しないでください ''


これを試して:

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

id = '\(item)'からid = \(item)に変換します。idは整数であるため、引用符を使用すると、ilはidを文字列と見なします。

それがあなたを助けるならば投票するすることを忘れないでください。 :)

47
Masterfego

また、それは私に役立ちました:

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

Swift 4.2、XCode 10.0、レルム3.14.1

0
Zhanserik