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