gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 10:38:07 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com