我是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)
我有疑问,如何将子文件夹数据添加到文件夹和子文件夹领域?
首先,考虑只使用一种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)