有没有办法更新对象而不用ObjectMapper删除它的列表?
例如:
我有User
型号:
class User: Object, ObjectMapper {
dynamic var id: Int = 0
dynamic var name: String = ""
var locations = List<Location>()
convenience required init?(map: Map) {
}
func mapping(map: Map) {
id <- map["id"]
name <- map["name"]
locations <- (map["locations"], ListTransform<Location>())
}
}
现在,如果我从服务器获取用户数据,出于效率原因,我不会每次都获取这些位置。但是,如果我在没有它们的情况下初始化用户并使用add(user, update: true)
保存它,则所有位置都会被删除,因为在JSON数据中找不到任何位置。
更新User对象属性的最佳和最干净的方法是什么,而不是它的关系?
答案 0 :(得分:1)
您应该从Realm中获取现有用户,然后更改其属性,这样您就可以保留以前保存的位置。
答案 1 :(得分:0)
空值仍被视为有效输入,因此,如果您传入的JSON字符串中存在locations
但为空,则Realm假设这意味着您要删除其中的所有内容。
避免这种情况的最简单方法是确保将名为locations
的空密钥传递给Realm。 Realm只会更新您明确提供的属性。如果它存在,您可以尝试将其从JSON文件中删除,或者如果检测到它是空的,则修改您的ObjectMapper逻辑以跳过它。