提供 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!)
}
ActivityList(活动列表)
Activity(活动)
ActivityLap(活动圈)
ActivityReference(活动参考)
Application(应用程序)
Author(作者)
Build(构建)
BuildType(构建类型)
Course(课程)
CourseLap(课程圈)
CourseList(课程列表)
CoursePoint(课程点)
CoursePointType(课程点类型)
Creator(创建者)
Gender(性别)
HeartRateInBeatsPerMinute(每分钟心跳数)
HeartRateInBeatsPercentMax(最大心率百分比)
Intensity(强度)
MultiSportSession(多项运动会话)
NextSport(下一个运动)
Plan(计划)
Position(位置)
QuickWorkoutResults(快速锻炼结果)
SensorState(传感器状态)
Sport(运动)
Track(轨迹)
Trackpoint(轨迹点)
Training(训练)
TrainingType(训练类型)
TriggerMethod(触发方法)
Version(版本)
ActivityExtension(活动扩展)
CadenceSensorType(踏频传感器类型)
ActivityTrackpointExtension(活动轨迹点扩展)
ActivityLapExtension(活动圈扩展)
ActivityGoals(活动目标)
Measure(测量)
RecurrenceCode(重复代码)
Period(周期)
ActivityGoal(活动目标)
ActivityGoals(活动目标)
此软件包由 Kevin A. Hoogheem 开发和维护
TcxDataProtocol 在 MIT 许可证 下可用