如何从存储在 Core Data SwiftUI 中的数据计算平均值

Posted

技术标签:

【中文标题】如何从存储在 Core Data SwiftUI 中的数据计算平均值【英文标题】:How can I calculate average from data stored in Core Data SwiftUI 【发布时间】:2021-07-01 14:41:31 【问题描述】:

我正在开发一个应用程序,它可以在 SwiftUI 中跟踪我在学校的所有成绩。 我正在使用一个 TextField,我可以在其中通过我的成绩。 (在德国,我们使用从 1 到 15 的数字,其中 1 是最差的,15 是最好的)。我将这些数据存储在 Core Data 中。

我有一个实体:成绩, 和一个属性:点(字符串)

@FetchRequest(entity: Grades.entity(), sortDescriptors: []) var grades : FetchedResults<Grades>

List 
ForEach(noten) note in
CellInfo(noteInfo: note)

  

我有一个带有 ForEach 视图的列表来可视化它。看起来是这样的:

我的问题是:如何计算所有成绩的平均值并显示在底部?

【问题讨论】:

如果 Grade 是一个数字,则将其存储为一个数字 (Int)。 但是如何将 textField 的值存储为 Int 以及如何获取 Int 值以从中获取平均值? 你今天如何存储价值?基本上你需要做的就是使用let value = Int(someText) ?? 0 【参考方案1】:

您可以创建一个计算属性来计算平均值

var average: Double 
    Double(grades.map(\.points).reduce(0, +)) / Double(grades.count)

如果 points 是 String 则需要转换

var average: Double 
    grades.map  Double($0.points) ?? 0 .reduce(0, +)) / Double(grades.count)

然后将其显示在您的列表下方

Text("\(average)")

【讨论】:

谢谢。这对我帮助很大!

以上是关于如何从存储在 Core Data SwiftUI 中的数据计算平均值的主要内容,如果未能解决你的问题,请参考以下文章

如何让 SwiftUI 与 Core Data 一起工作(在启动项目后)?

从 Core Data 非标量属性更新 SwiftUI 视图

SwiftUI从Core Data实体中获取总项目(SQL术语中的行)计数[重复]

Swift之深入解析如何结合Core Data和SwiftUI

SwiftUI - Core-Data - 在这种特殊情况下访问包装的值

SwiftUI Core Data 在 DetailView 中绑定 TextFields