是否可以在Swift UI中(通过获取请求)获取核心数据的总和(双精度)?预先感谢。
答案 0 :(得分:1)
是的,您可以使用reduce
方法。
var sum: Double {
fetchRequest.reduce(0) { $0 + $1.number }
}
这从初始值0开始,并且对于FetchRequest中的每个项目,它都将number
属性添加到累计总数中。
假设您在.xcdatamodeld文件中有一个名为SomeEntity
的实体,并带有一个名为number
的属性,则整个代码可能看起来像
struct ContentView: View {
@Environment(\.managedObjectContext) var managedObjectContext
@FetchRequest(entity: SomeEntity.entity(), sortDescriptors: [NSSortDescriptor(keyPath: \SomeEntity.number, ascending: false)]) var fetchRequest: FetchedResults<SomeEntity>
var sum: Double {
fetchRequest.reduce(0) { $0 + $1.number }
}
var body: some View {
Form {
Section {
Button("Add number") {
let entity = SomeEntity(context: self.managedObjectContext)
entity = Double.random(in: 0...10)
try? self.managedObjectContext.save()
}
}
Section(header: Text("Sum")) {
Text("\(sum)")
}
Section {
ForEach(fetchRequest, id: \.self) {
Text("\($0.number)")
}
}
}
}
}