Realm 中的模型继承

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" ])

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Realm是由Y Combinator公司孵化出来的一款可以用于iOS(同样适用于Swift&Objective-...
    小歪子go阅读 6,796评论 6 9
  • 跨平台:现在很多应用都是要兼顾iOS和Android两个平台同时开发。如果两个平台都能使用相同的数据库,那就不用考...
    CoderZS阅读 7,359评论 2 16
  • Objective‑C版本的 Realm 能够让您以一种安全、耐用以及迅捷的方式来高效地编写应用的数据模型层 数据...
    山水域阅读 13,564评论 12 37
  • 昨晚看了一部电影《宠爱》讲的是不同年龄段的人,不同的家庭和小宠物的六段故事,小宠物有猫有狗有小猪,有些故事情节看的...
    清水飞扬1阅读 2,669评论 1 2
  • 我对一条鱼的理解不比一弯湖多 我对一弯湖的理解不比一个渔夫多 瀑布和银河都还在 我对庐山的理解并不比诗人多 曾经的...
    止砚阅读 1,819评论 0 0

友情链接更多精彩内容