(双)获取请求字段的总和

Bev*_*oid 1 core-data swiftui

是否可以在 Swift UI 中获取核心数据(通过获取请求)字段(双精度)的总和?提前致谢。

Joh*_* M. 7

是的,你可以使用该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)