You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用NSPredicate基于数组过滤Realm Results列表?

解决Realm基于数组过滤Results的问题

嗨,刚好我之前也碰到过类似的需求,你的问题出在Predicate的操作符用错啦!

你原来用的CONTAINS是用来判断单个字符串是否包含某个子串的,而我们现在要做的是判断peopleID是否存在于一个字符串数组里,这时候应该用IN操作符——它专门用来检查属性值是否属于给定的集合(数组、Set都可以)。

直接把你的过滤代码改成下面这样就可以正常工作了:

list = list.filter(NSPredicate(format: "peopleID IN %@", peopleObjectId))

额外小提示:

  • 确保userData里的peopleID属性类型和peopleObjectId数组的元素类型完全一致(都是String),不然会出现匹配失败的情况哦。
  • 如果你的peopleObjectId数组里有重复值,可以先转成Set再传入,这样能减少Realm的查询匹配次数,稍微提升一点效率:
    let idSet = Set(peopleObjectId)
    list = list.filter(NSPredicate(format: "peopleID IN %@", idSet))
    

内容的提问来源于stack exchange,提问作者david

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 08:47:30