swift - 访问所有数组元素的子节点

标签 swift data-structures

我有一个包含以下对象的对象数组。它包含子属性,该属性实际上是另一个具有相同类型的对象数组,并且此结构继续进行。 我现在真正想要的是访问数组中所有元素的所有 Childs。

  class Group
    {
        var groupinfo:NSDictionary?
        var groupBalanceInfo:NSDictionary?
        var collapsed=true
        var haveChilds=false
        var groupHieght=30.0
        var child:Any?
        var level:Int?
        var queryString:String?
        var parentIndex = [Int]()
        var index = 0
    }

我正在尝试查找所有 child 和子 child 的计数,我尝试了以下操作,但它似乎不起作用。

func calculateCount()->Int
   {
   var allElementCount = 0
        var groups = agBalances.groups!
        for loop  in groups
        {
            if loop.child != nil
            {
                groups = loop.child as! [Group]
                allElementCount=allElementCount+groups.count
                continue
            }
        }
        return allElementCount
    }

最佳答案

对于一棵树,您需要一个调用自身的递归函数。

我建议将 children 声明为非可选的空数组,而不是单数名称 (child) 和未指定的 Any?

var children = [Group]()

递归函数有两个 inout 参数,计数器和(子)组。

func calculate(count: inout Int, in group: inout [Group])
{
    if !group.isEmpty {
        count += group.count
        for child in group {
            calculate(count: &count, in: &child.children)
        }
    }
}

并调用它

var groups = agBalances.groups!
var groupCount = 0

calculate(count: &groupCount, in: &groups)

关于swift - 访问所有数组元素的子节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52269020/

相关文章:

swift - 如何删除最后放置的子节点?

java - 追加两个单链表

data-structures - 不同数据结构的实际用途

algorithm - 用于查找缺少字母的单词的良好算法和数据结构?

java - 反转堆栈并添加到 ArrayList 的最有效方法

arrays - Swift:将所有按钮添加到数组中

ios - Swift - 来自 Parse 的表重复记录

ios - UI 测试标签栏 Controller

ios - 从 Swift Xcode 6 中的应用程序调用 iPhone

Java HashTable 使用 Bucket 方法