Swift3 将领域对象的Swift数组转换回领域结果

Swift3 将领域对象的Swift数组转换回领域结果,swift3,realm,Swift3,Realm,我有一个条目类,其中包含字段值对象列表: class Entry: Object{ let fieldValues = List<FieldValue>() //... } class FieldValue: Object{ dynamic var total = 0 //... } 现在,我想对过滤后的entryObjects中仍然存在的所有字段值的总计值进行求和。因此,如果我遍历所有条目,我可以构建一个FieldValue对象数组,如下所示: var entr

我有一个
条目
类,其中包含
字段值
对象列表:

class Entry: Object{
  let fieldValues = List<FieldValue>()
  //...
}

class FieldValue: Object{
  dynamic var total = 0
  //...
}
现在,我想对过滤后的
entryObjects
中仍然存在的所有
字段值的
总计
值进行
求和。因此,如果我遍历所有条目,我可以构建一个
FieldValue
对象数组,如下所示:

var entryObjects = realm.objects(Entry.self).filter(...)
var fieldValues = [FieldValue]()
for entry in entryObjects{
  fieldValues += entry.fieldValues  
}
我现在有
[FieldValue]
类型的
字段值。但是,为了对其
total
属性执行
求和
,它必须是
Results
类型:

让total:Int=fieldValues.sum(of property:“total”)执行以下操作:

let entryObjects = realm.objects(Entry.self).filter(...)
let total = entryObjects.map({ $0.fieldValues.sum(ofProperty: "total") }).reduce(0, +)

当Realm支持嵌套键路径()上的聚合操作时,可以使用KVC来实现,但这仍在进行中。

回答得很好,谢谢。我最终以类似的方式使用了
reduce
,但这比我想到的代码还要少。
let entryObjects = realm.objects(Entry.self).filter(...)
let total = entryObjects.map({ $0.fieldValues.sum(ofProperty: "total") }).reduce(0, +)