【问题标题】:realm predicate with an object inside object域谓词与对象内的对象
【发布时间】:2018-04-26 12:36:50
【问题描述】:

我有以下领域对象

class Patient: Object {

    @objc dynamic var name: String?
    let list = List<RString>()
}

class RString: Object {

    @objc dynamic var stringValue: String?

}

我需要使用stringValue = "test" 过滤列表中具有RString 组件的Patient 对象

这样的事情可能吗?

patients = realm?.objects(Patient.self).filter("name = 'name1' AND @% IN list", RString(stringValue: 'test'))

【问题讨论】:

  • 这是一个非常简化的示例,还是您实际上只是想过滤Strings 中的List?由于一段时间以来,List 也支持存储非Object 子类,因此您可以简单地定义let list = List&lt;String&gt;()
  • 这是一个简化的例子,RString类包含其他变量

标签: swift realm nspredicate


【解决方案1】:

您需要使用SUBQUERY 才能访问NSPredicateList 元素的属性。 SUBQUERY 将为每个Patient 评估true,其list 属性至少包含1 个RString 元素,其stringValue 与提供的String 匹配。

patients = realm?.objects(Patient.self).filter("name = %@ AND SUBQUERY(list,$element,$element.stringValue == %@).@count>0", "name1", "test")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多