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

Swift中如何使用Realm过滤字典类型数据并检查元素存在性?

解决Realm中字典类型数据的过滤问题

嘿,我来帮你搞定这个Realm过滤字典的问题!你之前的写法有点问题,因为Realm对字典类型的查询需要明确针对键集合或者值集合来操作,直接用contains在字典上是不生效的。下面分几种常见场景给你解决方案:

1. 检查字典中是否存在指定的键

如果你想找dt字典里包含某个键(比如_ean作为键)的Article对象,要针对字典的键集合来查询:

_realm?.objects(Article.self).filter("dt.Keys CONTAINS %@", _ean).first

2. 检查字典中是否存在指定的值

如果你的需求是找dt字典里的值等于_ean的Article对象,就需要针对值集合查询:

_realm?.objects(Article.self).filter("dt.Values CONTAINS %@", _ean).first

3. 检查字典中是否存在特定的键值对

要是你需要精准匹配某个键对应的值等于_ean,可以用动态键的方式构建查询(比如键是一个变量):

// 假设你的目标键是一个变量keyToCheck
let keyToCheck = "some_key"
let predicate = NSPredicate(format: "dt.%K == %@", keyToCheck, _ean)
_realm?.objects(Article.self).filter(predicate).first

为什么原代码不生效?

你之前写的"dt contains %@"是错误的,因为Realm的查询语法里,contains操作符不能直接作用于字典类型。字典类型需要通过.Keys或.Values来访问对应的集合,再对集合使用查询操作符。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:38:51