想象一下这样的代码:更新全班不会工作
class StoredVersions: Object{
@objc dynamic var minimumAppVersion = 0.0
@objc dynamic var sets = 0.0
}
class LoadViewController: UIViewController {
let realm = try! Realm()
override func viewDidLoad() {
super.viewDidLoad()
let db = Firestore.firestore()
var newestVersions = StoredVersions()
if let resultsStoredVersion = self.realm.objects(StoredVersions.self).first{
print("found stored versions: \(resultsStoredVersion)")
self.storedVersions = resultsStoredVersion
}else{
try! self.realm.write {
print("no stored versions")
self.realm.add(self.storedVersions)
}
}
db.collection("data").document("version").getDocument(completion: { (data, someError) in
if let versions = data.flatMap({StoredVersions(value: $0.data()) }) {
try! self.realm.write {
self.storedVersions = versions
}
}
})
}
storedVersions被更新,但是当我重新启动应用程序,storedVersions是恢复到初始状态。我确实看到打印“找到存储版本”。
如果我一次只写一个变量,它就会起作用。看起来像这样:
try! self.realm.write {
self.storedVersions.sets = versions.sets
}
如何更新整个班级,而不必一次放入一个变量?
请问您可以分享一些情况吗?例如,具有'storedVersions'属性的类的类定义,您提供的输入(即'data')以及您期望得到的结果。 – bdash
hi @bdash,我编辑了我的问题以添加更多上下文,如果需要,我可以添加更多内容。我提供的输入和我的预期结果是“应该”打印(“版本”打印)。我的“storedVersions”应该包含与“版本”相同的值。 –
您可以请分享包含正在执行的代码的类声明吗? – bdash