Database 领域可以处理对象的继承吗?

Database 领域可以处理对象的继承吗?,database,realm,Database,Realm,我正在考虑使用领域作为私有开发的数据库。 所以我想知道Realm是否可以像iOS的CoreData一样处理对象继承 CoreData支持对象的继承,因此很容易创建类似文件系统的结构 比如说, FileSystemObject:对象 名称:String 父:文件夹 文件夹:FileSystemObject 子项:[FileSystemObject] 文件:FileSystemObject 内容:Blob 这种结构很容易在CoreData中创建和处理。 Realm是否可以本地轻松创建

我正在考虑使用领域作为私有开发的数据库。 所以我想知道Realm是否可以像iOS的CoreData一样处理对象继承

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

比如说,

  • FileSystemObject:对象
    • 名称:String
    • 父:文件夹
  • 文件夹:FileSystemObject
    • 子项:[FileSystemObject]
  • 文件:FileSystemObject
    • 内容:Blob
这种结构很容易在CoreData中创建和处理。 Realm是否可以本地轻松创建和处理此类结构

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


但我主要关心的是减少结构设计和编码量,所以我想知道Realm可以以本机方式处理此问题…

是的,但仅限于代码共享,而不是多态性。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>()
}
类文件系统对象:对象{
动态变量名:String
动态变量父文件夹?
动态变量种类:Int
动态变量文件:文件?
动态变量文件夹:文件夹?
}
枚举文件系统对象种类:Int{
案例文件、文件夹
}
类文件:对象{
动态var内容:NSData
}
类文件夹:对象{
let children=List()
}