我具有以下功能,当切换按钮将其激活时,该功能可以正常工作。我想添加一个变量,为每个消息提供从1开始的当前消息编号。我尝试了各种设置/更新值的方法,但是这些方法都无法帮助更新。
我对Swift / iOS开发非常陌生,因此我确定我缺少一些东西。我所知道的是,该消息会反复打印到控制台上,直到关闭按钮为止,Timer
才能使其连续运行。
@IBOutlet weak var stateLabel: UILabel!
//Starts / Stops recording of sensor data via a switch
@IBAction func stateChange(_ sender: UISwitch) {
if sender.isOn == true {
startSensorData()
stateLabel.text = "Stop"
} else {
stopSensorData()
stateLabel.text = "Start"
}
}
func startSensorData() {
print("Start Capturing Sensor Data")
// Making sure sensors are available
if self.motionManager.isAccelerometerAvailable, self.motionManager.isGyroAvailable {
// Setting the frequency required for data session
self.motionManager.accelerometerUpdateInterval = 1.0 / 3.0
self.motionManager.gyroUpdateInterval = 1.0 / 3.0
// Start sensor updates
self.motionManager.startAccelerometerUpdates()
self.motionManager.startGyroUpdates()
// Configure a timer to fetch the data.
self.motionUpdateTimer = Timer.scheduledTimer(withTimeInterval: 1.0/3.0, repeats: true, block: { (timer1) in
// Get the motion data.
var loggingSample = 1
if let accelData = self.motionManager.accelerometerData, let gyroData = self.motionManager.gyroData {
let accelX = accelData.acceleration.x
let accelY = accelData.acceleration.y
let accelZ = accelData.acceleration.z
let gyroX = gyroData.rotationRate.x
let gyroY = gyroData.rotationRate.y
let gyroZ = gyroData.rotationRate.z
let message = "\(Date().timeIntervalSince1970),\(self.device_id),\(loggingSample),\(accelX),\(accelY),\(accelZ),\(gyroX),\(gyroY),\(gyroZ),Processing"
print(message)
loggingSample += 1
}
}
)}
}
答案 0 :(得分:1)
您不断获得1
的{{1}}值,因为您使用的是每次创建为loggingSample
的局部变量。
您需要做的就是将1
的声明移到函数外部,使其成为类属性。
移动行:
loggingSample
该功能之外,因此它位于您的店铺和其他属性旁边。