Realm Swift中的一对多关系怎么样?

Sri*_*i.. 1 realm ios swift3

我是Realm SWift的新手.我希望在Swift3.0中实现一对多的关系

我有文件夹列表,每个文件夹可能有子文件夹列表.所以我创建了两个像下面这样的relam文件.

文件夹领域类

 class FolderRealm: Object {

    dynamic var folderName : String?
    dynamic var createdDate : Date?
    let subFolders = List<SubFolderRealm>()
 }
Run Code Online (Sandbox Code Playgroud)

SubFolder领域类

 class SubFolderRealm: Object {

   dynamic var subFolderName : String?
   dynamic var createdDate : Date? 

 }
Run Code Online (Sandbox Code Playgroud)

对于添加文件夹,我使用了以下代码行

let folder : FolderRealm  = FolderRealm()
folder.folderName = searchBarObj.text!
folder.createdDate = Date()
 try! realm.write {
   realm.add(folder)
 }
Run Code Online (Sandbox Code Playgroud)

我有疑问,如何将子文件夹数据添加到文件夹和子文件夹领域?

Yoa*_*ges 9

首先,考虑只使用一种Folder类型而不是两种类型,当所有数据相同时,没有点具有Subfolder对象.

class Folder : Object {
    dynamic var folderName:String = ""
    dynamic var createdDate:Date = Date()
}
Run Code Online (Sandbox Code Playgroud)

其次,对于您的情况,您可能希望使用LinkingObjects.

class Folder : Object {
    dynamic var folderName:String = ""
    dynamic var createdDate:Date = Date()
    dynamic var parentFolder:Folder? = nil

    let subfolders = LinkingObjects(fromType: Folder.self, property: "parentFolder")
}
Run Code Online (Sandbox Code Playgroud)

你会创建这样的对象:

let parentFolder = Folder()
let subfolder1 = Folder()
let subfolder2 = Folder()

parentFolder.folderName = "whatever"

subfolder1.parentFolder = parentFolder
subfolder2.parentFolder = parentFolder

let realm = try! Realm()
try! realm.write { realm.add([parentFolder, subfolder1, subfolder2])}
Run Code Online (Sandbox Code Playgroud)