0

このraywenderlichチュートリアルを迅速に実装しようとしていますが、残念ながら私は

  fatal error: unexpectedly found nil while unwrapping an Optional value

オンライン

    let acceleration :CMAcceleration = self.motionManager!.accelerometerData.acceleration

なぜそれが起こるのか助けてください

ここからシーンファイルをダウンロードしてください

4

1 に答える 1

0

self.motionManagerが nil で、値をアンラップしようとしています。オプションのバインドnilでチェックするnilか、オプションのチェーンを使用して、オプションの値を常にアンラップします。

if let motionManager = self.motionManager {
   if let accelerometerData = motionManager.accelerometerData {
      let acceleration :CMAcceleration = accelerometerData.acceleration
   }
 }
 else {
   print("motion manager is nil")
 }

初期化されているかどうかは、コードを確認する必要がありますmotionManager

編集

ドキュメントを確認しました

加速度計データの最新のサンプルを返します。使用できない場合は nil を返します。*/

var accelerometerData: CMAccelerometerData! { get }

したがって、 nil もチェックする必要がありますaccelerometerData。それは可能でnilあり、暗黙的にラップされたオプションであるため、データが利用できない場合にクラッシュします。

于 2014-12-27T18:08:39.293 に答える