Realm created_at& updated_at时间戳

时间:2017-07-30 15:31:19

标签: swift swift3 realm

我想在我的Realm对象CartViewControllercreated_at中实现2个时间戳。

updated_at只有在首次将对象插入数据库时​​才会设置一次。

每次修改和保存对象时,

created_at都会存储一个新的时间戳。

我发现我能做到这一点的唯一方法是使用存储库模式,使用updated_atcreate函数,然后设置时间戳。但是采用这种模式意味着重构很多代码。

据我所知,Realm对象没有任何类型的钩子,例如update& beforeSave我可以在对象模型本身上实现,这本来是一个有用的替代方案。

除了存储库模式,或者在我的整个应用程序中手动更新任何afterSave之前的时间戳,还有其他方法可以实现此目的吗?

1 个答案:

答案 0 :(得分:1)

Realm提供了两种方法来实现您的目标。

第一种方法是Key-Value Observation,它实现了一个广泛使用的具有相同名称的设计模式。请参阅Apple's documentation on the topic

第二种方法是Realm自己的替代方法,称为Notifications。您可以获取有关特定Realm实例的每个写入事务的通知,并处理您需要处理的事务,或者您可以注册有关single Objects的通知。

当您观察/获得有关对象更新的通知时,您可以使用这两种方法更新updated_at对象的Realm属性。处理created_at属性更加容易,只需在对象初始化时将其设置为不可变值,或者甚至可以在对象初始化函数内自动执行。