如何在Swift中从Realm数据库中过滤对象

时间:2018-03-27 09:29:20

标签: swift realm

我有realm数组,我想过滤包含id = 2和user_id = 4的对象。请查看下面的代码。

 for item in realm.objects(data.self).filter("id == 2 && user_id == 4") {
   print(item)
  }

3 个答案:

答案 0 :(得分:1)

您在某个领域使用了错误的运算符,请在下面查看我的答案。

for item in realm.objects(data.self).filter("id == 2 AND user_id == 4") {
   print(item)
}

答案 1 :(得分:1)

id与两个值同时进行比较似乎逻辑,id 总是有一个值(2或4)但不是两者,这意味着你的代码应该总是返回一个空数组。

如果您打算根据id的值(例如2或4)过滤对象,则可以这样做:

for item in realm.objects(data.self).filter("id == 2 OR id == 4") {
   print(item)
}

请注意,在谓词中,您应键入" AND"而不是"&&"和"或"而不是" ||"。有关详细信息,请查看:https://realm.io/docs/swift/latest/#filtering

表示itemid为2或4的任何项目。

<强>更新

由于谓词的变化来自:

"id == 2 OR id == 4"

"id == 2 && user_id == 4"

你应该简单地做什么 - 正如我在上面的说明中所提到的 - 是改变&#34;&amp;&amp;&#34;到&#34; AND&#34;:

for item in realm.objects(data.self).filter("id == 2 AND user_id == 4") {
   print(item)
}

答案 2 :(得分:-1)

尝试一下:

for item in realm.objects(data.self).filter("id = %@ OR id == %@",2,4) {
  print(item)
}