2015-07-28 142 views
0

因此,我使用领域缓存并保留来自我们Web平台的所有数据。它通过API加载。realm.io保留子对象

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

所以它会基本上是

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

这是很酷的,因为它有一个孩子realmobject作用境界店这只是我们的目标罚款。

但是,当我们加载内容,f/e评论。该对象不包含角色,但它可以包含当前登录的用户。数据正在保存,因此该角色将因缺少提供而丢失。

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

回答

0

如果用户username被定义为一个主键,你可以使用createOrUpdate/create(…, update: true)检索来自API的意见时,保留用户的角色,并与现有的缓存实例合并。

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使来自用户的链接无效。

+0

我想尝试这听起来不错。 –

+0

现在我明白了,太糟糕了,我的json必须先被GSON解析,(在Java中)swift中我手动执行,因为API返回蛇情况(下划线),并且应用程序使用camelCase。 有没有其他选择,当你有对象?我想不是吗? –

+0

您可以尝试Realm + JSON,这有助于您在模型中定义映射。 https://github.com/matthewcheok/Realm-JSON – marius