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

SwiftUI中如何将Realm ObjectId转换为String?

解决方案

首先确保Swift端的Realm模型定义正确,对应Kotlin端的ObjectId,Swift里要使用RealmSwift.ObjectId类型:

import RealmSwift

class Restaurant: Object {
    @Persisted(primaryKey: true) var _id: ObjectId
    @Persisted var name: String = ""
    @Persisted var adress: String?
}

接下来直接通过stringValue属性将ObjectId转为String即可,这是Realm Swift SDK中ObjectId类型自带的标准属性:

// 假设restaurant是已获取到的非可选实例
let idString = restaurant._id.stringValue
// 在SwiftUI视图中直接使用
Text(restaurant._id.stringValue)

如果你的restaurant是可选类型,需要先安全解包再访问属性:

if let restaurant = restaurant {
    let idString = restaurant._id.stringValue
    // 后续逻辑
}

之前报错的原因

  • restaurant_id as! String无效:因为ObjectId是Realm的专属类型,和String属于不同类型体系,无法直接强制类型转换。
  • .toHexString()报错:这是旧版本Realm SDK的方法,新版本已废弃,统一使用stringValue获取十六进制字符串。
  • "\(restaurant._id.stringValue)"报错:大概率是restaurant为可选值未解包,或者Swift端模型的_id类型定义错误(比如误用了其他类型而非RealmSwift.ObjectId)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 22:30:53