答案 0 :(得分:1)
将Double转换为Int将按书面方式工作。问题是由于某种原因在运行时self.motion.magnetometerData为nil,因此tmp为nil。
通常最好安全地包装可选内容,例如:
let tmp = self.motion.magnetometerData?.magneticField.x
if let tmpValue = tmp {
let tmpInt = Int(tmpValue)
print(tmpInt) //And whatever else
}
或者,如果您打算在结果为零时不继续操作,请使用防护装置:
guard let tmp = self.motion.magnetometerData?.magneticField.x else {
return //Or whatever is appropriate when the value is nil
}