gpt4 book ai didi

ios - 更新对象时保留 Realm 属性值

转载 作者:可可西里 更新时间:2023-11-01 02:05:05 26 4
gpt4 key购买 nike

我正在开发一个 Swift 3 Realm 应用程序,我有这个 Realm 模型类:

class User: Object {
dynamic var userName = ""
dynamic var userURL = ""
dynamic var userThumbnailURL = ""
dynamic var isRegistered = false

var userID = RealmOptional<Int>()

override class func primaryKey() -> String? {
return "userID"
}
}

然后我按如下方式添加值。我从我的服务器获取它们并将它们保存在本地数据库中:

查询 1

let user = User()
user.userName = fields["userName"] as! String
user.userURL = fields["userURL"] as! String
user.userThumbnailURL = fields["userThumbnailURL"] as! String
user.userID.value = fields["userID"] as? Int
try! uiRealm.write {
uiRealm.add(user, update: true)
}

然后,当用户完成注册时,我将本地 Realm 数据库中的特定用户更新为注册用户 (isRegistered = true)。该值仅保存在本地 Realm 数据库中:

uiRealm.beginWrite()
let updatingUser = uiRealm.objects(User).filter("userID = %d", self.userId)
let user = updatingUser.first
book?.isRegistered = true
try! uiRealm.commitWrite()

但我的问题是,当收到新的服务器响应并且我重新运行查询 1 时,isRegistered 属性变为 false。我怎样才能避免这种情况?

最佳答案

简短的回答是,不能通过将 Object 子类的实例传递给 Realm.add(_:update:) 来执行对象的部分更新。这样做的原因是没有办法表示 不更新此属性 Object 子类上的属性。你会想要将字典传递给 Realm.create(_:value:update:) ,其中缺少给定键表示不要更新此属性

关于ios - 更新对象时保留 Realm 属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43555777/

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