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

通过主键查询单个Realm对象报错:无效对象ID需为24位十六进制数字

问题根因

你定义的Chapter模型主键chapterID为Int类型,但查询时你将入参chapterID通过"\(chapterID)"转为了字符串类型传入查询方法,主键值类型和模型定义的主键类型不匹配触发了报错。
Realm在校验非字符串类型主键的入参时,如果你错误传入字符串值,会默认将其识别为ObjectId类型进行校验,因此抛出了「必须为24位十六进制字符」的错误提示。

修复方法

查询时直接传入原始Int类型的chapterID即可,不要做字符串转换:

// 修改前错误写法
// let chapter = try Realm().object(ofType: Chapter.self, forPrimaryKey: "\(chapterID)")

// 修改后正确写法
let chapter = try Realm().object(ofType: Chapter.self, forPrimaryKey: chapterID)
其他排查注意点
  • 确保你当前初始化的Realm实例,和之前写入Chapter数据时使用的Realm实例配置一致,默认配置下无需额外调整,如果你自定义了Realm配置要统一使用相同配置初始化
  • 确认你查询的chapterID对应的Chapter对象已经成功写入当前Realm库中,若数据不存在查询会返回nil,不会抛出异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 02:48:01