TcxDataProtocol 1.0.2

TcxDataProtocol 1.0.2

Kevin A. Hoogheem 维护。



  • Kevin A. Hoogheem

TcxDataProtocol

Swift5 Version License Platform Readme Score

提供一个 TCX XML 格式的 Swift 版本。

安装

TcxDataProtocol 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中

pod 'TcxDataProtocol'

Swift 包管理器

dependencies: [
    .package(url: "https://github.com/FitnessKit/TcxDataProtocol", from: "1.0.2")
]

如何使用

解码

let tcxUrl = URL(fileURLWithPath: "TestFile" + ".tcx")
let tcxData = try? Data(contentsOf: tcxUrl)

if let tcxData = tcxData {
    let tcxFile = try? TcxFile.decode(from: tcxData)
}

编码

每个 Trackpoint 的时间必须唯一。以下示例显示了从上一个时间开始的每秒增量。

let workoutStartDateTime = Date()
let build = Build(version: Version(major: 0, minor: 1, buildMajor: 0, buildMinor: 0), time: nil, builder: nil, type: .alpha)
let author = Author(name: "TcxDataProtocol", build: build, language: nil, partNumber: "11-22-33")
let track = [Track(trackPoint: [
                    Trackpoint(time: workoutStartDateTime.addingTimeInterval(Double(1)), position: nil, altitude: nil, distance: 1.11, heartRate: HeartRateInBeatsPerMinute(heartRate: 100), cadence: 100, sensorState: SensorState.present, extensions: [Extension(activityTrackpointExtension: ActivityTrackpointExtension.init(speed: 11.2, runCadence: nil, watts: 111, cadenceSensor: CadenceSensorType(rawValue: "bike")), activityLapExtension: nil, activityGoals: nil)]),
                    Trackpoint(time: workoutStartDateTime.addingTimeInterval(Double(2)), position: nil, altitude: nil, distance: 1.11, heartRate: HeartRateInBeatsPerMinute(heartRate: 101), cadence: 101, sensorState: SensorState.present, extensions: [Extension(activityTrackpointExtension: ActivityTrackpointExtension.init(speed: 11.3, runCadence: nil, watts: 222, cadenceSensor: CadenceSensorType(rawValue: "bike")), activityLapExtension: nil, activityGoals: nil)])
                    ])]

let lap = ActivityLap(startTime: workoutStartDateTime, totalTime: 45.0, distance: 12.0, maximumSpeed: nil, calories: 120, averageHeartRate: nil, maximumHeartRate: nil, intensity: .active, cadence: nil, triggerMethod: .manual, track: track, notes: nil, extensions: nil)

let activity = Activity(sport: .biking, identification: workoutStartDateTime, lap: [lap], notes: nil, training: nil, creator: nil)

let activities = ActivityList(activities: [activity], multiSportSession: nil)

let database = TrainingCenterDatabase(activities: activities, courses: nil, author: author)

let TCXFile = TcxFile(database: database)

let encodedData = try? TCXFile.encode(prettyPrinted: true)

if let encodedData = encodedData {
    let xml = String(bytes: encodedData, encoding: .utf8)
    print(xml!)
}

支持元素

  • 活动列表
  • 活动
  • 活动圈
  • 活动引用
  • 应用
  • 作者
  • 构建
  • 构建类型
  • 课程
  • 课程圈
  • 课程列表
  • 课程点
  • 课程点类型
  • 创建者
  • 性别
  • 心率(每分钟跳动次数)
  • 心率(最大百分比)
  • 强度
  • 多运动训练会话
  • 下一个运动
  • 计划
  • 位置
  • 快速训练结果
  • 传感器状态
  • 运动
  • 轨迹
  • 轨迹点
  • 训练
  • 训练类型
  • 触发方法
  • 版本号

支持扩展

  • 活动扩展

    • 踏频传感器类型
    • 活动轨迹点扩展
    • 活动圈扩展
  • 活动目标

    • 测量
    • 重复代码
    • 周期
    • 活动目标
    • 活动目标

作者

此软件包由 Kevin A. Hoogheem 开发和维护

许可协议

TcxData协议在MIT许可证下可用