swift

swiftでモーションセンサーの値を取得する方法でエラーになるのを解決した




こんにちは!yatsureです。
20170301くらいの話なんですけどね?

モーションセンサーの値が取得できない

というトラブルに見舞われたんですよ。
加速度とかジャイロスコープ、姿勢の測定値とかです。
それを書籍や他サイトを参考にコードを書いたんですが、エラーを景気良くゲロゲロしまくるxcode。

先にトラブルの解決方法をお伝えします。
変数handlerを作る時に問題がありました。

let handler: CMDeviceMotionHandler = {
(motionData: CMDeviceMotion?, error:NSError?) -> Void in

self.motionAnimation(motionData, error: error as Error? as NSError?)

}

こんな感じの定型文を使っている方、ご注意ください。
これ、正しくは



let handler: CMDeviceMotionHandler = {
(motionData: CMDeviceMotion?, error:Error?) -> Void in

self.motionAnimation(motionData, error: error as Error? as NSError?)

}

です。

swift3の本を読んでも、最近の記事を読んでも、上の方の様に書いてあるのでやってみるとエラー。。。
as!をつけて型を変えろ的なエラーが出るので、従ってやってると結局ダメという誠にfu●ckな状況に。
いよいよ困って、藁にもすがる勢いで英語成績2▲の私はappleのリファレンス?をgoogle翻訳して読みました。すると

(motionData: CMDeviceMotion?, error:NSError?) -> Void in

(motionData: CMDeviceMotion?, error:Error?) -> Void in

って書いてある事に気がつき、
「おいおい冗談だろマイケル?」
と半笑いでNSを消したところ動作しました♨︎

モーションセンサーの値を取得する元々のやり方については、他のサイトや書籍を参考にしてください(・∀・)




-swift