簡體   English   中英

Swift 2至Swift 3.0 motionManager

[英]Swift 2 to Swift 3.0 motionManager

我正在將應用程序從swift 2轉換為swift 3,並且嘗試使用CMMotionManager,但是當我嘗試調用.startAccelerometerUpdates()函數時,它給了我這個錯誤……盡管不知道出了什么問題。

這是我初始化管理器的方式:

let motionManager = CMMotionManager()

嘗試調用該函數:

    motionManager.startAccelerometerUpdates(to: OperationQueue.main) { [weak self] (data: CMAccelerometerData?, error: NSError?) in
        self!.outputAccelerationData(data!.acceleration)
    }

錯誤:無法將類型“((CMAccelerometerData ?, NSError?)->()”的值轉換為預期的參數類型“ CMAccelerometerHandlerHandler”(又名“((Optional,Optional)->()”))

謝謝!

隱秘的錯誤消息可以歸結為:在Swift 3中, NSError被橋接為Error 像這樣編寫代碼,問題應該消失:

motionManager.startAccelerometerUpdates(to: OperationQueue.main) { [weak self] (data: CMAccelerometerData?, error: Error?) in

Swift3中有許多更改。 特別是在表達式中。 刪除了許多類型的NS后綴,例如NSError到Error, NSData到Data。 因此,將NSError更改為Error 而且,如果要防止CMMotionManager的多個實例出現性能問題,請使用SwiftyMotionManager

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM