美文网首页
Realm 中的模型继承

Realm 中的模型继承

作者: 张嘉夫 | 来源:发表于2017-03-12 21:26 被阅读267次

Realm 中的模型可以被进一步子类化,模型之间可以复用大量代码,但是不支持 Cocoa 的运行时类多态性。可以做到下面这些事:

  • 子类可以继承父类的类方法、实例方法和属性。
  • 以父类为参数的方法和函数,也可以接受它的子类。

下面这些事是做不到的:

  • 在多态类间进行转换(即子类到子类、子类到父类、父类到子类等等)。
  • 同时查询多个类。
  • 多类容器(List 和 Results)

Realm 正在按计划 添加这个功能,目前 提供了一些代码示例 ,用于解决一些较常见的模式。
又或者,如果你愿意的话,Realm 建议使用以下模式的类组合,以构建包含其他类逻辑的子类:

// 基类
class Animal: Object {
  dynamic var age = 0
}

// 继承自 Animal 的模型
class Duck: Object {
  dynamic var animal: Animal? = nil
  dynamic var name = ""
}
class Frog: Object {
  dynamic var animal: Animal? = nil
  dynamic var dateProp = NSDate()
}

// 使用
let duck = Duck(value: [ "animal": [ "age": 3 ], "name": "Gustav" ])

相关文章

网友评论

      本文标题:Realm 中的模型继承

      本文链接:https://www.haomeiwen.com/subject/rmyxnttx.html