Function 具有核心数据的嵌套函数

Function 具有核心数据的嵌套函数,function,core-data,swiftui,Function,Core Data,Swiftui,这里的迅捷新手:-) 我有一个核心数据实体“Cars”,具有以下属性: @NSManaged public var id: UUID? @NSManaged public var uses: Int16 @NSManaged public var cost: Int16 @NSManaged public var type: String 我试图打印出每种类型汽车的平均每次使用成本(例如,我的意思是,所有大众汽车的使用次数,除以所有大众汽车的总成本,除以大众汽车

这里的迅捷新手:-)

我有一个核心数据实体“Cars”,具有以下属性:

    @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}
        
    }
我想也许我需要使用嵌套函数


正如我所提到的,我是一个初学者,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
用于构建视图,而不是处理数据。

谢谢,非常有用!我想可能是这样的。根据瓦迪安的回复,我也确信有一些问题。注意:当我尝试您的代码时,我得到了这个错误:“无法推断复杂的闭包返回类型;添加显式类型以消除歧义”。做了一点小小的修改就解决了这个问题:“让平均值:[Int]=cars.map{i in”。你想在你的回复中进行编辑,这样我就可以将它标记为答案吗?我更新了答案。这是浏览器代码,所以我在发布之前没有检查它是否编译过,对不起,没必要道歉。这非常有用-非常感谢!
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
    
}