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
相关产品推荐
相关产品推荐

