在Core Data中保存对象修改

时间:2015-08-01 23:05:41

标签: ios swift core-data

我正在使用Swift的iOS应用程序。

假设我在CoreData中存储了以下对象:

class Exercise: NSManagedObject {
    @NSManaged var name: String
    @NSManaged var sets: Int16
    @NSManaged var reps: Int16
}

如何保存用户所做的名称,集合和代表的所有更改历史记录?

允许用户根据需要多次更改任何属性,我需要跟踪它以显示进度等。

我是否需要在每次更改时创建一个对象复制(具有相同的ID?),或者有更好的解决方案来保留修订?

1 个答案:

答案 0 :(得分:0)

我会创建一个与历史实体的'to-many'关系。历史实体将存储更改的日期,已更改的字段以及旧/新值 -

class Exercise: NSManagedObject {

    @NSManaged var name: String
    @NSManaged var sets: NSNumber
    @NSManaged var reps: NSNumber
    @NSManaged var history: NSSet

}


class ExerciseHistory: NSManagedObject {

    @NSManaged var changeDate: NSDate
    @NSManaged var changedItem: String
    @NSManaged var newValue: NSNumber
    @NSManaged var oldValue: NSNumber
    @NSManaged var exercise: Exercise

}