首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >更新具有主键的领域对象

更新具有主键的领域对象
EN

Stack Overflow用户
提问于 2018-04-27 03:26:25
回答 1查看 538关注 0票数 1

我正在尝试用主键更新一个领域对象。现在请记住,我不是在更新主键,而是只更新其中的另一个字段。以下是我的目标:

代码语言:javascript
运行
复制
class UserData : Object {

@objc dynamic var name: String? = nil
@objc dynamic var bio: String? = nil
@objc dynamic var username: String? = nil
@objc dynamic var phone: String? = nil
@objc dynamic var uid : String? = nil
@objc dynamic var imageL: Data? = nil

override static func primaryKey() -> String {
    return "uid"
}

}

extension UserData {


func writeToRealm(){
    try? RealmService.uirealm.realm.write {
        RealmService.uirealm.realm.add(self, update: true)
    }
}

func DeleteFromRealm(object: Results<UserData>){
    try? RealmService.uirealm.realm.write {
        RealmService.uirealm.realm.delete(object)
    }
}

}

这就是我如何在我的程序中实例化领域服务:

代码语言:javascript
运行
复制
class RealmService {

static let uirealm = RealmService()

private var _initRS = try! Realm()

var realm: Realm! {
    return _initRS
}
}

我正在尝试更新对象的"bio“属性,但是我已经给出了一个

“无法更新主键”的异常

现在,我真的不明白为什么要抛出这个错误,即使我没有更新对象中的主键。

额外备注:

我正在更新firebase实例的每个可观察到的更改上的领域对象。这就是我遇到问题的地方。因为每次发生更改时,只会有一个写领域实例。

相同的代码:

代码语言:javascript
运行
复制
FBDataservice.ds.REF_USERS.child(uuid).observe(.value, with: { (snapshot) in
        if snapshot.hasChild("credentials") {
            if let snap = snapshot.value as? Dictionary<String, Any> {
                if let cred = snap["credentials"] as? Dictionary<String, Any> {

                    let u = User(userid: uuid, userData: cred)
                    self.usercache.uid = uuid
                    self.usercache.bio = u.aboutme
                    self.usercache.writeToRealm()
                }
            }
        }
//            RealmService.uirealm.realm.refresh() ------> No sure about this
    })
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-27 04:05:54

我认为问题就在这条线上

代码语言:javascript
运行
复制
self.usercache.uid = uuid

因为self.usercache已经是一个领域对象,所以当您更新它的uid =>时,它会抛出异常。

不要重复使用self.usercache,而是尝试创建一个新的UserData对象。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50054762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档