gpt4 book ai didi

ios - 为什么我不能在 Realm 中保存数据

转载 作者:行者123 更新时间:2023-11-28 07:56:59 27 4
gpt4 key购买 nike

我有 SaveDataToRealm 类。在这门课中,我试图在 Realm 中存储数据。但我无法得到它。当我在写入后打印 Realm 对象时,它显示的对象没有我尝试写入的值。

class SaveDataToRealm: BaseViewController {

override func viewDidLoad() {
super.viewDidLoad()
saveSessionData()
}

// MARK:- save session and Close session
func saveSessionData() {
let realm = try! Realm()
let localSession = TempRingSessionObject()
if isLiveSession{
sessionId = RandomStringGenerator.sharedInstance.getUniqueSessionString()
localSession.sessionId = sessionId!
} else{
localSession.class_id = courseSetupDetails["class_id"] as! String
}
try! realm.write {
realm.add(localSession)
}
}

通过使用 saveSessionData() 函数,我正在初始化 Realm。在 closeSelfSession() 函数中,我试图将数据存储到 Realm 中。

func closeSelfSession(currentTimeStamp:String)  {   
let realm = try! Realm()
if !(sessionId ?? "").isEmpty{
let session = realm.objects(TempRingSessionObject.self).filter("sessionId contains '\(String(describing: self.sessionId))'").last
try! realm.write {
session?.score = "60"
session?.timeOfSession = currentTimeStamp
session?.tempSessionData.append(objectsIn:realm.objects(TempRingDataObject.self).filter("tag = '\(tagString)'"))
}
} else{
let session = realm.objects(TempRingSessionObject.self).filter("sessionId contains '\(self.courseSetupDetails["class_id"] as! String)'").last
try! realm.write {
session?.tempSessionData.append(objectsIn: realm.objects(TempRingDataObject.self).filter("tag = '\(tagString)'"))
session?.timeOfSession = currentTimeStamp
session?.score = "75"
}
}
}

我做错了什么?谢谢!

最佳答案

您用于过滤的 NSPredicate 都是有缺陷的。

你永远不应该使用 String(describing:) 来比较变量,因为根据确切的类型它可能会产生意想不到的结果。此外,在谓词中使用单引号时,您告诉编译器查找确切的结果而不是变量的值。在使用 NSPredicate 时,您也不应该使用字符串插值 ("\(variable)"),您应该使用 %@格式说明符。

let session = realm.objects(TempRingSessionObject.self).filter("sessionId contains '\(String(describing: self.sessionId))'").last

实际上应该是

let session = realm.objects(TempRingSessionObject.self).filter("sessionId CONTAINS @%",self.sessionID).last

这个谓词 realm.objects(TempRingDataObject.self).filter("tag = '\(tagString)'") 应该是

realm.objects(TempRingDataObject.self).filter("tag = %@",tagString)

还有你的最后一个谓词,

realm.objects(TempRingSessionObject.self).filter("sessionId contains '\(self.courseSetupDetails["class_id"] as! String)'"

应该是

realm.objects(TempRingSessionObject.self).filter("sessionId CONTAINS %@",self.courseSetupDetails["class_id"])

关于ios - 为什么我不能在 Realm 中保存数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47774409/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com