recordAccelerometer

I am writing a code to capture the accelerometer data for one hour, it suppose to save in the iOS device first, and then I would like to upload to cloudkit. Here is my code.

import UIKit import CoreMotion import CloudKit

class ViewController: UIViewController {

@IBOutlet weak var accelerometerSwitch: UISwitch!

private let recorder = CMSensorRecorder()
private let cloudKitContainer = CKContainer(identifier: "iCloud.com.example.accelerometer-recorder")

override func viewDidLoad() {
    super.viewDidLoad()

    accelerometerSwitch.addTarget(self, action: #selector(accelerometerSwitchValueChanged), for: .valueChanged)
}

private func saveDataToAppFolder(data: [CMSensorRecordingData]) {
    let fileName = "accelerometer_data.dat"
    let fileManager = FileManager.default
    let documentsDirectoryURL = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first!
    let fileURL = documentsDirectoryURL.appendingPathComponent(fileName)

    let jsonData = try! JSONEncoder().encode(data)
    try! jsonData.write(to: fileURL)
}



@objc private func accelerometerSwitchValueChanged() {
    if accelerometerSwitch.isOn {
        recorder.recordAccelerometer(forDuration: 3600.0) { sensorData in
            if let sensorData = sensorData {
                // Handle the recorded data
                saveDataToAppFolder(data: sensorData)
                uploadDataToCloudKit(data: sensorData)
            } else {
                print("No accelerometer data recorded")
            }
        }
    } else {
        // No need to stop recording since it will stop automatically after the duration
    }
}

private func uploadDataToCloudKit(filePath: String) {
    let fileURL = URL(fileURLWithPath: filePath)
    let data = try! Data(contentsOf: fileURL)

    let record = CKRecord(recordType: "RecordedData")
    record["data"] = data

    let database = cloudKitContainer.publicCloudDatabase
    database.save(record, completionHandler: { record, error in
        if let error = error {
            print("Error uploading data to CloudKit: \(error)")
        } else {
            print("Data uploaded to CloudKit successfully")
        }
    })
}

}

Anyone can help to fix the error. Thanks a lot.

Replies

Anyone can help to fix the error.

What are the symptoms of the error?

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"