(两倍)提取请求字段的总和

是否可以在Swift UI中(通过获取请求)获取核心数据的总和(双精度)?预先感谢。

fanabcdefg 回答:(两倍)提取请求字段的总和

是的,您可以使用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)")
                }
            }


        }
    }
} 
本文链接:https://www.f2er.com/3065208.html

大家都在问