Realm中的NSPredicate-从结果数组中搜索任何项目

时间:2018-06-29 12:39:41

标签: swift realm nspredicate

我有一个Realm数据库,其中包含一个地点列表,每个地点都有一个placeTypes列表。我希望能够使用谓词查询,例如-

let searchKey = "hotel"
let predicate = NSPredicate(format: "%@ IN placeTypes", searchKey)

,但是当我要匹配多个搜索键时,这不起作用。到目前为止,我的解决方案是使用NSCompoundPredicate-

let searchKeys = ["hotel", "cafe", "bar"]
let predicates: [NSPredicate] = searchKeys.map { NSPredicate(format: "%@ IN placeTypes", $0) }
let compoundPredicate = NSCompoundPredicate(orPredicateWithSubpredicates: predicates)

这一切都很好,也很好,并且确实可以工作,但是我感觉这对于大型表来说并不是特别有效,并且无论如何将其合并为一个谓词将是很好的。

如果有人对如何做到这一点有任何想法,我将不胜感激-在SO上进行的大量搜索都没有找到类似的问题。

1 个答案:

答案 0 :(得分:0)

通过这种方式将项目细分为酒店,餐厅等类别可能会更有效,因为您只需在相应的类别中进行搜索