我想在我的Realm对象CartViewController
和created_at
中实现2个时间戳。
updated_at
只有在首次将对象插入数据库时才会设置一次。
created_at
都会存储一个新的时间戳。
我发现我能做到这一点的唯一方法是使用存储库模式,使用updated_at
和create
函数,然后设置时间戳。但是采用这种模式意味着重构很多代码。
据我所知,Realm对象没有任何类型的钩子,例如update
& beforeSave
我可以在对象模型本身上实现,这本来是一个有用的替代方案。
除了存储库模式,或者在我的整个应用程序中手动更新任何afterSave
之前的时间戳,还有其他方法可以实现此目的吗?
答案 0 :(得分:1)
Realm
提供了两种方法来实现您的目标。
第一种方法是Key-Value Observation,它实现了一个广泛使用的具有相同名称的设计模式。请参阅Apple's documentation on the topic。
第二种方法是Realm
自己的替代方法,称为Notifications。您可以获取有关特定Realm
实例的每个写入事务的通知,并处理您需要处理的事务,或者您可以注册有关single Objects的通知。
当您观察/获得有关对象更新的通知时,您可以使用这两种方法更新updated_at
对象的Realm
属性。处理created_at
属性更加容易,只需在对象初始化时将其设置为不可变值,或者甚至可以在对象初始化函数内自动执行。