Realm Swift如何更新List对象

时间:2018-04-24 15:31:49

标签: swift realm

当我尝试更新List上的值时遇到问题。 这是我的数据库模型:

class User: Object {

@objc dynamic var id : Int = 0
@objc dynamic var height : Int = 0
@objc dynamic var age : Int = 0
@objc dynamic var sex : String = ""
@objc dynamic var physicalActivity : Double = 1.0
@objc dynamic var goal : String = ""
let weightProgress = List<WeightProgress>()
let calories = List<Calories>()

override static func primaryKey() -> String? {
    return "id"

}
}


class Calories : Object {

@objc dynamic var date : String?
@objc dynamic var eatenCalories : Int = 0

}

主要功能是,用户输入了多少卡路里,并将其保存到数据库中。日期由Date()生成并转换为String。如果下一个值具有相同的Date我想要更新现有的eatenCalories属性,如果Date不同,我想为DB创建另一个记录。

有什么想法吗?

现在,在每个值添加后,它会在DB中创建另一条记录。

BR IMAT

1 个答案:

答案 0 :(得分:0)

将现有对象添加或更新到Realm中。如果对象具有主键,则仅传递true以进行更新。如果Realm中没有对象具有相同的主键值,则插入该对象。否则,使用任何更改的值更新现有对象。

你应该使用

  

self.realm.add(item,update:true)

您应该将主键添加到对象