Realm主键类型只有int / string,灵活的工作方式吗?

时间:2018-08-10 01:51:45

标签: ios swift realm

因此,Realm的primaryKey类型仅包含Int和String。但是我有一个带有Date的结构,我想用作主键。我可以在没有主键的情况下存储该结构,但这意味着以后无法使用copyToRealmOrUpdate()方法。我可以将日期存储为int格式,无论我在代码中处理的位置如何,都可以将Date()转换为Int格式:

Int32( date.timeIntervalSinceReferenceDate)

但这是凌乱的/骇人听闻的(恕我直言)。

相反,我创建了一个“后备”变量,如下所示:

class MyData:Object {

  @objc private dynamic var _dts:Int32 = 0
  @objc dynamic var dts: Date = Date.distantPast

  convenience init(dts:Date) {
    self.init()

    self._dts = dtsFrom(date:dts)
    self.dts = dts
  }

  func dtsFrom(date:Date) -> Int32 {
    return Int32( date.timeIntervalSinceReferenceDate)
  }

  func dateFrom(dts:Int32) -> Date {
    return Date(timeIntervalSinceReferenceDate: Double(dts) )
  }

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

创建MyData对象很简单,并且由于它是私有的,因此不会将_dts显示为由init()方法处理的_dts:

MyData(dts:Date())

在我走这条路之前,这是一种明智的工作方式,还是有更好的方法来处理此Realm限制?

0 个答案:

没有答案