2015-06-14 4 views
2

Я открыл приложение в новой бета-версии Xcode7, которая отлично работала в старой версии. Теперь я получаю ошибки, и я не знаю, как это решить. Вот код. Ошибка комментируется.Ошибка iOS9 в действииManager.startActivityUpdatesToQueue

import UIKit 
import CoreMotion 
class ViewController: UIViewController { 

let activityManager = CMMotionActivityManager() 
let pedoMeter = CMPedometer() 

@IBOutlet weak var activityState: UILabel! 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 

    if(CMMotionActivityManager.isActivityAvailable()){ 
     print("YESS!") 
     self.activityManager.startActivityUpdatesToQueue(NSOperationQueue.mainQueue(), withHandler: {(data: CMMotionActivity!) -> Void in //Cannot invoke 'startActivityUpdatesToQueue' with an argument list of type '(NSOperationQueue, withHandler: (CMMotionActivity!) -> Void)' 
     dispatch_async(dispatch_get_main_queue(), {() -> Void in 
     if(data.stationary == true){ 
     self.activityState.text = "Stationary" 
     } else if (data.walking == true){ 
     self.activityState.text = "Walking" 
     } else if (data.running == true){ 
     self.activityState.text = "Running" 
     } else if (data.automotive == true){ 
     self.activityState.text = "Automotive" 
     } 

     }) 
     }) 
} 

} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 


} 

ответ

4

Проблема заключается в типе данных CMMotionActivity? не CMMotionActivity!

Вот то, что должно работать для вас:

if(CMMotionActivityManager.isActivityAvailable()){ 
     print("YES!") 
     self.activityManager.startActivityUpdatesToQueue(NSOperationQueue.mainQueue()) { data in 
      if let data = data { 
       dispatch_async(dispatch_get_main_queue()) { 
        if(data.stationary == true){ 
         self.activityState.text = "Stationary" 
        } else if (data.walking == true){ 
         self.activityState.text = "Walking" 
        } else if (data.running == true){ 
         self.activityState.text = "Running" 
        } else if (data.automotive == true){ 
         self.activityState.text = "Automotive" 
        } 
       } 
      } 
     } 
    } 

Также попробуйте воспользоваться последним аргументом является замыканием для упрощения вызовов функций.

+1

Спасибо, что так много! Вы решили мои проблемы! Thx снова! –

Смежные вопросы