SwiftUI - 处理矩阵中的行和列
SwiftUI - Working with rows & columns in a matrix
我创建了一个具有以下属性的核心数据实体:
而且我已经成功地手动输入了 5 个“Round”实例,这样我就有了 5“行”数据,并确认 Core Data 正在运行。
问题是现在如何将矩阵中的“列”相加(对于 Int64 值),然后除以“行”数,即计算每列的平均值?
我是新手,非常感谢您的帮助。
此外,如果我创建一个 func 来执行这些计算,我是否可以仅在 Core Data FetchRequest 之后立即调用它?
谢谢。
是的,您可以在代码中创建函数并在获取的核心数据上调用它们。此外,您不需要核心数据中的 total
属性,因为您可以即时计算它。
我假设您的 FetchRequest 生成一个名为 coredata
的 Round
数组
func total(round: Round) -> Int64 {
return round.pos1 + round.pos2 + round.pos3 + round.pos4 + round.pos5
}
func columnSum(pos: Int) -> Int64 {
switch pos {
case 1: return coredata.reduce(0, { [=10=] + .pos1 })
case 2: return coredata.reduce(0, { [=10=] + .pos2 })
case 3: return coredata.reduce(0, { [=10=] + .pos3 })
case 4: return coredata.reduce(0, { [=10=] + .pos4 })
case 5: return coredata.reduce(0, { [=10=] + .pos5 })
default: return 0
}
}
func columnAverage(pos: Int) -> Double {
return Double(columnSum(pos: pos)) / Double(coredata.count)
}
然后你可以在你的视图中做这样的事情:
Text("Average row 1: \(columnAverage(pos: 1))")
我创建了一个具有以下属性的核心数据实体:
而且我已经成功地手动输入了 5 个“Round”实例,这样我就有了 5“行”数据,并确认 Core Data 正在运行。
问题是现在如何将矩阵中的“列”相加(对于 Int64 值),然后除以“行”数,即计算每列的平均值?
我是新手,非常感谢您的帮助。
此外,如果我创建一个 func 来执行这些计算,我是否可以仅在 Core Data FetchRequest 之后立即调用它?
谢谢。
是的,您可以在代码中创建函数并在获取的核心数据上调用它们。此外,您不需要核心数据中的 total
属性,因为您可以即时计算它。
我假设您的 FetchRequest 生成一个名为 coredata
Round
数组
func total(round: Round) -> Int64 {
return round.pos1 + round.pos2 + round.pos3 + round.pos4 + round.pos5
}
func columnSum(pos: Int) -> Int64 {
switch pos {
case 1: return coredata.reduce(0, { [=10=] + .pos1 })
case 2: return coredata.reduce(0, { [=10=] + .pos2 })
case 3: return coredata.reduce(0, { [=10=] + .pos3 })
case 4: return coredata.reduce(0, { [=10=] + .pos4 })
case 5: return coredata.reduce(0, { [=10=] + .pos5 })
default: return 0
}
}
func columnAverage(pos: Int) -> Double {
return Double(columnSum(pos: pos)) / Double(coredata.count)
}
然后你可以在你的视图中做这样的事情:
Text("Average row 1: \(columnAverage(pos: 1))")