【问题标题】:Core Data @FetchRequest SwiftUI核心数据 @FetchRequest SwiftUI
【发布时间】:2020-04-17 13:15:20
【问题描述】:

我正在尝试在 SwiftUI Charts 包/CocoaPod 中使用获取请求。我的问题是,当我使用 ForEach 迭代属性 (ACFTScores.totalScore) 时,它会为每个图表填充一个值...我知道这是因为 BarChart 在 ForEach 的正文中,但我不知道如何获取获取的范围并使其与 SwiftUI 图表一起使用。

struct DashboardACFT: View {
    @FetchRequest(entity: ACFTScores.entity(), sortDescriptors: [NSSortDescriptor(keyPath: \ACFTScores.totalScore, ascending: true)]) var acftScores: FetchedResults<ACFTScores>

    var body: some View {
        VStack {
            ForEach(acftScores, id: \.id) { score in
                BarChartView(data: [Int(score.totalScore)], title: "Title", legend: "Legendary")
            }
        }
    }
}

【问题讨论】:

    标签: core-data swiftui nsfetchrequest


    【解决方案1】:

    我没有使用过图表,但您需要将您的 fetch 请求映射到包含您要在图表中使用的值的数组中。像这样的

    var body: some View {
        VStack {
            BarChartView(data: acftScores.map {$0.totalScore}, title: "Title", legend: "Legendary")
            }
        }
    }
    

    由于您似乎出于某种原因需要将属性转换为Int,因此使用compactMap 可能会更好。

    acftScores.compactMap {Int($0.totalScore)}
    

    【讨论】:

    • 这太棒了!我尝试使用 .map 但我离开了 [ ]...再次感谢!
    猜你喜欢
    • 2020-03-09
    • 2020-07-16
    • 2014-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多