领域错误:无效值,期望int和接收:0

时间:2015-06-09 06:53:29

标签: ios swift realm

我使用Realm和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]始终在集合中。

为什么我收到此错误?

2 个答案:

答案 0 :(得分:42)

<强> - 编辑 -

  • 如果您使用:id = 'YOUR_VAR_OR VALUE' =&gt;表示id是字符串(例如:id ='4')

  • 但如果你使用:id = YOUR_VAR_OR VALUE =&gt;表示id是整数(例如:id = 4)

NB:所以当你的id是一个整数时,不要使用引号''

试试这个:

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

id ='\(item)'转换为 id = \(item)因为id是整数,如果使用引号,il会将id视为字符串。

如果它有帮助,请不要忘记投票。 :)

答案 1 :(得分:0)

它对我也有帮助:

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

Swift 4.2,XCode 10.0,Realm 3.14.1