function - 使用 Core Data 的嵌套函数
问题描述
SwiftUI 新手在这里 :-)
我有一个核心数据实体“汽车”,具有以下属性:
@NSManaged public var id: UUID?
@NSManaged public var uses: Int16
@NSManaged public var cost: Int16
@NSManaged public var type: String
我试图打印出每种类型汽车的平均每次使用成本(我的意思是,例如,使用所有大众汽车的次数,除以所有大众汽车的总成本,除以大众汽车的总数)。
我已经设法将汽车分组为具有以下功能的类型group
:
func group(_ result : FetchedResults<Cars>)-> [[Cars]] {
return Dictionary(grouping: result) { $0.type }
.sorted(by: {$0.key < $1.key})
.map {$0.value}
}
但是,现在我正在努力创建一个包含每种类型平均值的数组。
我尝试添加此功能,但收到消息“在范围内找不到 'av'”:
func andAv (cars: [[Cars]]) -> [Int] {
ForEach(cars, id: \.self) { i in
let sumCost = i.map { Int($0.cost) }.reduce(0,+)
let sumUses = i.map { Int($0.uses) }.reduce(0,+)
let itemCount = i.map { $0.id }.count
let av = sumCost / sumUses / itemCount
}
return [av]
}
我想也许我需要使用嵌套函数?
正如我所提到的,我是一名初学者,而 SwiftUI 是我的第一门编程语言,所以我可能遗漏了一些非常明显的东西或犯了一个愚蠢的错误。在任何一种情况下,任何帮助都非常感谢!
解决方案
ForEach
是一种 SwiftUI 类型,用于基于数据集合创建视图。此时您对视图不感兴趣。
func andAv (cars: [[Cars]]) -> [Int] {
let averages: [Int] = cars.map { i in
let sumCost = i.map { Int($0.cost) }.reduce(0,+)
let sumUses = i.map { Int($0.uses) }.reduce(0,+)
let itemCount = i.count
let av = sumCost / sumUses / itemCount
return av
}
return averages
}
您还应该解决 vadian 关于整数和核心数据类型的答案中的要点,但您的基本问题是ForEach
构建视图,而不是处理数据。
推荐阅读
- python - 如何在 numpy 数组中找到连续的正、负和零?
- azure - Azure 搜索分数显示相同文档的不同值
- javascript - 为什么滚动后颜色不改变?CSS/Javascript
- sql - 我如何使用两个不同的表 SQL 在表上进行 INNER JOIN
- javascript - 如何打印到控制台或使用单引号 json
- spring-boot - 在生产环境中使用 K8 部署 Spring Boot 微服务
- reactjs - 如何在nextjs的登录页面中隐藏导航栏标题
- apache-spark - Pyspark parquet 文件大小完全不同
- reactjs - 如何从 React 中的 api 获取字节数组图像
- css - ReactJS 高级自定义样式