如何在Swift中使用Realm获取特定父母的所有子孙?

时间:2019-05-10 11:50:58

标签: swift realm

我有3个这样的数据库设置,例如Parent-> Child-> Grandchild,到目前为止,我可以设法获得特定父级的子级,但是无法深入到另一个层次。

class Parent : Object {
    @objc dynamic var name : String = ""
    let childs = List<Child>()
}

class Child : Object {
    @objc dynamic var name : String = ""
    let grandchilds = List<Grandchild>()
    var giveBirth = LinkingObjects(fromType: Parent.self, property: "childs")
}

class Grandchild : Object {
    @objc dynamic var name : String = ""
    var giveBirth = LinkingObjects(fromType: Child.self, property: "grandchilds")
}

我用这一行来计算孩子数:

if let parent = itemsFromParentList?[indexPath.row] {    
    cell.detailTextLabel?.text = "\(parent.childs.count)"
}

但是我想得到一个特定父母的所有孩子+孙子的总数,例如“您有多少个孩子和孙子?”。

非常感谢!

1 个答案:

答案 0 :(得分:0)

请注意,“孩子”的复数形式是“孩子”

如果我理解正确,则需要先绘制父级的孙子平面图,然后对其进行计数,然后再将其子级数添加到其中。

    static void Main(string[] args)
    {                    
        doSomeStuff();            
    }

    public static async void doSomeStuff()
    {
        var connString = "Server=localhost;User ID=root;Password=password;Database=mysql";

        using (var conn = new MySqlConnection(connString))
        {
            await conn.OpenAsync();                

            using (var cmd = new MySqlCommand("SELECT host FROM mysql.user", conn))
            using (var reader = await cmd.ExecuteReaderAsync())
                while (await reader.ReadAsync())
                    Console.WriteLine(reader.GetString(0));
        }


        Console.WriteLine("Finished!");
        Console.ReadKey();
    }