是的,你可以使用该reduce方法。
var sum: Double {
fetchRequest.reduce(0) { $0 + $1.number }
}
Run Code Online (Sandbox Code Playgroud)
这从初始值 0 开始,对于 FetchRequest 中的每个项目,它都会将该number属性添加到累计总数中。
假设您SomeEntity的 .xcdatamodeld 文件中有一个名为 的实体,其属性名为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)")
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
521 次 |
| 最近记录: |