2016-10-17 7 views
-4

로 이름이 바뀌 었습니다, 나는 오류를 받고 있어요 :오류 : 스위프트 3.0</p> <p>오류를 컴파일하는 동안 'NSOperationQueue는'엑스 코드 8.0에서 OperationQueue

" 'NSOperationQueue는'OperationQueue로 이름이 바뀌 었습니다"언제 OperationQueue.mainQueue()로 전환하면 "mainQueue"메서드가 존재하지 않습니다! 대체 된 것은 무엇입니까 ???

let manager = CMMotionManager() 
    if manager.isGyroAvailable { 
     manager.gyroUpdateInterval = 0.1 
     manager.startGyroUpdates() 
     let queue = NSOperationQueue.mainQueue() 
     manager.startGyroUpdatesToQueue(queue) { 
      (data, error) in 
      // ... 
     } 
    } 
    if manager.isAccelerometerAvailable { 
     manager.accelerometerUpdateInterval = 0.01 
     manager.startAccelerometerUpdatesToQueue(NSOperationQueue.mainQueue()) { 
      [weak self] (data: CMAccelerometerData?, error: NSError?) in 
      if let acceleration = data?.acceleration { 
       self.physicsWorld.gravity = CGVectorMake(acceleration.x, acceleration.y) 
      } 
     } 
    } 

NSOperationQueues가 올바르게 형식화되도록 위의 코드를 수정하는 방법은 무엇입니까?

+0

오류는 매우 명확합니다. 'NSOperationQueue'를'OperationQueue'로 변경하십시오. 해당 API에 대해서는'OperationQueue' 문서를보십시오. – rmaddy

+2

"NSOperationQueue"의 어느 부분이 OperationQueue로 이름이 변경 되었습니까? 이해하지 못합니까? – matt

+0

좋습니다. 나는 구체적으로 xcode 오류가있는 'fix-it'옵션이있는 특정 상황에 주목하고 있습니다. 오류에 수정 기능을 사용하면 NSOperationQueue의 이름을 OperationQueue로 바꿉니다. 그 결과는 그다지 효과적이지 않으며 실제로 아무 것도 고치지 않습니다. 이름을 변경 한 후에 문제 해결 방법에 대한 좋은 의견을 실제로 제공하지는 않습니다. 또한 'stackoverflow에 대한 빠른 참조를 사용하면 다른 사람이 이러한 문제를 겪게되는 대신 빠른 해결책을 찾을 수 있습니다. 문서를 검색 할 수 있습니다. – JThora

답변

1

쓰기 OperationQueue.main.

매우 간단합니다. 실제로 코드에서 단계를 건너 뛰고 작업 대기열이 예상되는 곳에 .main을 쓸 수 있습니다. 따라서 :

manager.startGyroUpdatesToQueue(.main) {