【问题标题】:Local createdAt & updatedAt timestamps in RealmRealm 中的本地 createdAt 和 updatedAt 时间戳
【发布时间】:2016-03-29 11:09:49
【问题描述】:

我正在努力将以下框架组合在一起,以自动将 JSON 响应映射到 Realm 并将对象保存到数据库中。

  • 领域
  • 阿拉莫菲尔
  • 对象映射器
  • AlamofireObjectMapper

有了这个我想设置createdAt(不是来自服务器的本地时间戳)时间戳,如果它是一个新对象,并且总是更新updatedAtupdatedAt 设置起来非常简单,只是没有任何触发器可以注册并以干净的方式进行。

我从使用realm.add(object, update: true) 开始,但我意识到这会使现有的createdAt 无效。

一种解决方案是在保存之前始终获取对象,但是在获取大量对象以保持createdAt 完整时,这似乎相当繁重。

  1. Realm 中没有任何触发器可以订阅运行代码吗 例如保存/加载?
  2. 在 Realm 中处理此类时间戳的最佳方法是什么?

【问题讨论】:

  • 如果你想使用realm.add(object, update: true)你的对象应该有一个主键。你有吗?
  • 是的!我正在服务器/客户端之间同步数据,并使用 UUID 作为主键。
  • 你最好的选择似乎是通过主键获取对象,更新它并信任 Realm 的性能:) 当你说“获取很多对象”时,你在谈论多少个对象?
  • 我猜最大100-1000,还没测试性能

标签: ios swift realm


【解决方案1】:

cmets 中讨论的绝对是最好的方法。 Realm 不会更新未包含在 object 中的属性(即,如果它是 Dictionary 仅概述了几个属性),但如果您使用正确的 Realm 更新 Objectnil 是有效值,因此 Realm 无法知道不去触摸它。

Realm 的性能很快,因为在您真正开始访问它们的属性之前,对象及其值实际上并没有被分页到内存中,因此按照 cmets 中提到的手动更新对象应该可以工作,并且不应该有任何明显的性能开销。

【讨论】:

  • 感谢您的回复!您能否也添加问题(1)的答案?在保存/加载对象时运行代码似乎是一种常见的需求(例如,在保存之前添加 updatedAt 时间戳)?您是否在待办事项中有此内容,或者您​​对此有何看法?
  • 在将我的应用程序从 CoreData 迁移到 Realm 时遇到了下一个问题:github.com/realm/realm-cocoa/issues/1277。使用保存触发器可以更轻松地保持相关对象值的更新缓存值。
  • @bdash / TiM 您是否有任何触发器需要在加载或保存时收到通知?
  • github.com/realm/realm-cocoa/issues/1994请求的生命周期方法是什么意思?如果是这样,Realm 还不支持它们。
猜你喜欢
  • 2018-10-08
  • 1970-01-01
  • 1970-01-01
  • 2019-10-14
  • 2020-10-08
  • 2015-10-11
  • 2019-06-16
  • 2019-07-19
  • 1970-01-01
相关资源
最近更新 更多