You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift Charts技术问题:如何输出HeartRate结构体生成的数据数组?

打印Swift Charts生成的心率数据数组

1. 在Playground中直接打印

直接调用HeartRate.data获取数据数组即可打印。为了让输出更易读,建议给HeartRate添加CustomStringConvertible扩展优化打印格式:

// 添加扩展,让打印内容更直观
extension HeartRate: CustomStringConvertible {
    var description: String {
        "Day: \(day), Heart Rate: \(value)"
    }
}

// 在Playground中调用并打印
let heartRateData = HeartRate.data
print("生成的心率数据:")
heartRateData.forEach { print($0) }

运行后就能在Playground控制台看到每个元素的日期和心率数值。

2. 在SwiftUI视图中打印

可以选择两种时机打印数据:视图初始化时,或者视图渲染完成后。

方式一:初始化时打印

修改NewLineChartView的初始化方法,在初始化过程中打印数据:

struct NewLineChartView: View {
    var dataPoints: [HeartRate]

    init(dataPoints: [HeartRate] = HeartRate.data) {
        self.dataPoints = dataPoints
        // 打印数据
        print("视图初始化时的心率数据:")
        dataPoints.forEach { print($0) }
    }

    var body: some View {
        Chart(dataPoints, id: \.self) { rate in
            LineMark(x: .value("Day", rate.day),
                     y: .value("Heart rate", rate.value))
            .foregroundStyle(.red)
            .symbol(Circle().strokeBorder(lineWidth: 1.5))
        }
    }
}

方式二:视图出现时打印

利用.onAppear修饰符,在视图渲染完成后打印数据:

struct NewLineChartView: View {
    var dataPoints: [HeartRate]

    var body: some View {
        Chart(dataPoints, id: \.self) { rate in
            LineMark(x: .value("Day", rate.day),
                     y: .value("Heart rate", rate.value))
            .foregroundStyle(.red)
            .symbol(Circle().strokeBorder(lineWidth: 1.5))
        }
        .onAppear {
            print("视图出现时的心率数据:")
            dataPoints.forEach { print($0) }
        }
    }
}

完成修改后,在Xcode预览或运行App时,就能在控制台看到生成的日期和数值数组。


内容的提问来源于stack exchange,提问作者mgianzero

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 20:10:30