ไม่สามารถแปลงค่าของประเภท (CMAccelerometerData!,NSError!)->() เป็น CMAccelerometerHandler(aka(Optional‹CMAccelerometerData›,Optional‹NSError›)-‹())

physicsWorld.gravity = CGVector(dx: 0, dy: -2)
    physicsWorld.contactDelegate = self

    motionManager.accelerometerUpdateInterval = 0.2

    motionManager.startAccelerometerUpdatesToQueue(OperationQueue.currentQueue!) { (data:CMAccelerometerData?, error:NSError?) -> Void in
        if let accelerometerData = data {
            let acceleration = accelerometerData.acceleration
            self.xAcceleration = (CGFloat(acceleration.x) * 0.75 + (self.xAcceleration * 0.25))
        }
    }        

ฉันไม่รู้วิธีแก้ไข พอฉันคลิก 'แก้ไข' มันก็ไม่ทำงาน


person Rainer Daniel    schedule 20.01.2017    source แหล่งที่มา
comment
ลบ ?s ทั้งสองออก   -  person shallowThought    schedule 20.01.2017


คำตอบ (1)


ฉันคิดว่าคุณถูกหลอกโดย XCode ซึ่งทำให้ฉันรำคาญเช่นกัน (จริงๆ แล้ว "Fix-it" ไม่ได้แก้ไข)

ในกรณีของคุณ คุณไม่มี to: และ withHandler:

ต่อไปนี้เป็นโค้ดการทำงานที่มี Swift3.0.2 และ XCode 8.2.1 ต่ำกว่า iOS 10

motionManager.startAccelerometerUpdates(
  to: OperationQueue.main ,
  withHandler:{ (data : CMAccelerometerData?, error : Error?) in
    if let accelerometerData = data {
        let acceleration = accelerometerData.acceleration
        self.xAcceleration = (CGFloat(acceleration.x) * 0.75 + (self.xAcceleration * 0.25))
    } 
})
person Ryan Wu    schedule 24.01.2017