【问题标题】:Can Realm handle inheritance of Object?Realm 可以处理 Object 的继承吗?
【发布时间】:2016-03-24 23:17:06
【问题描述】:

我正在考虑将 Realm 用作私人开发的数据库。 所以我想知道Realm是否可以像iOS的CoreData一样处理Object的继承。

CoreData 支持 Object 的继承,因此很容易创建类似文件系统的结构。

例如,

  • 文件系统对象:对象
    • 名称:字符串
    • 父级:文件夹
  • 文件夹:文件系统对象
    • 孩子:[文件系统对象]
  • 文件:文件系统对象
    • 内容:Blob

这样的结构很容易在 CoreData 中创建和处理。 Realm 可以原生且轻松地创建和处理这样的结构吗?

不用说,Realm 只是一个数据库,所以如果我将对象分成多个表并通过自编码将它们视为单个对象,我可以实现这一点。

但我主要关心的是减少结构设计和编码量,所以我想知道 Realm 可以原生处理这个......

【问题讨论】:

    标签: database realm


    【解决方案1】:

    是的,但仅用于代码共享而不是多态。 Realm 认为每个子类都是完全不相关的类型,这意味着在您的示例中,List<FileSystemObject> 只能存储实际的 FileSystemObject 对象,而不能存储 FolderFile 对象,这可能不是您想要的.您在 Realm 中的类层次结构必须类似于:

    class FileSystemObject : Object {
        dynamic var name: String
        dynamic var parent: Folder?
    
        dynamic var kind: Int
        dynamic var file: File?
        dynamic var folder: Folder?
    }
    
    enum FileSystemObjectKind: Int {
        case File, Folder
    }
    
    class File : Object {
        dynamic var content: NSData
    }
    
    class Folder : Object {
        let children = List<FileSystemObject>()
    }
    

    【讨论】:

      猜你喜欢
      • 2010-11-15
      • 1970-01-01
      • 2011-03-04
      • 1970-01-01
      • 2011-02-11
      • 1970-01-01
      • 2023-03-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多