realm.io保留子对象

时间:2015-07-28 12:17:37

标签: copy children realm

所以我使用领域来缓存并保留我们网络平台的所有数据。通过API加载。

当您以用户身份获取自己时,我们也会返回一个用户角色,具体取决于您是一个简单的成员,管理员还是其他任何人。

所以它基本上是

user: {
    "username" : "user",
    "role" : {"id":1,"name":"admin"}
}

这很酷,因为realm将它存储在我们的对象中,这些对象具有子实体对象的作用。

然而,当我们加载内容时,f / e评论。该对象不包含角色,但它可以包含当前登录的用户。数据被持久化,因此角色将丢失,因为它没有提供。

我们有什么聪明的方法可以解决这个问题吗?或者唯一的选择是在加载评论时向用户发送角色信息。

1 个答案:

答案 0 :(得分:0)

如果将用户上的username定义为主键,则可以在从API检索注释时使用createOrUpdate / create(…, update: true)来保留用户的角色并将其与现有的缓存实例。

let realm = Realm()
let jsonDict = [
  "message": "Hello world",
  "user": [ "username" : "user" ]
]
realm.create(type: Comment.self, value: jsonDict, update: true)

请注意,只有在检索到的JSON中缺少角色时,此方法才有效。如果它位于"role": null,则字典将包含NSNull,这将导致Realm使用户的链接无效。