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, +)