2016-02-24 1 views
0

EDIT: Не уверен, что это может быть корень моей проблемы, но может ли эта часть кода в делете приложения быть причиной, почему это не работает?Внесите ResearchKit в ViewController, чтобы сделать опрос

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 
    // Override point for customization after application launch. 
    let navigationController = self.window!.rootViewController as! UINavigationController 
    let controller = navigationController.topViewController as! HomeViewController 
    controller.managedObjectContext = self.managedObjectContext 
    return true 

} 

Я пытаюсь добавить функцию обзора в приложение с интеграцией ResearchKit. Я проработал руководство по настройке и некоторые другие уроки от Рэя Вендерлиха. Однако, когда я перешел в приложение, которое я хотел бы разработать, я немного застрял.

Я получаю выброшен ошибку:Cannot assign value of type 'HomeviewController to type 'ORKTaskViewControllerDelegate?'

Это код, я работаю с:

class HomeViewController: UIViewController { 
var managedObjectContext: NSManagedObjectContext? 

@IBAction func surveyTapped(sender: AnyObject) { 

    let taskViewController = ORKTaskViewController(task: SurveyTask, taskRunUUID: nil) 
    taskViewController.delegate = self 
    presentViewController(taskViewController, animated: true, completion: nil) 

} 
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if segue.destinationViewController.isKindOfClass(NewRideViewController) { 
     if let newRideViewController = segue.destinationViewController as? NewRideViewController { 
      newRideViewController.managedObjectContext = managedObjectContext 
     } 
    } 
} 
} 

На основе подобных вопросов с этим синтаксисом ошибки, пользователи добавили еще один контроллер класс, но который находится вне меня. Ваша помощь очень ценится, спасибо StackExchange!

ответ

1

Похоже, вы не продлили просматривать контроллер для реализации делегата ORKTaskViewController который ORKTaskViewControllerDelegate и ваш код VC должен быть следующим -

import ResearchKit 

class HomeVC: UIViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
    } 

    @IBAction func surveyTapped(sender: AnyObject) { 
     let taskViewController = ORKTaskViewController(task: SurveyTask, taskRunUUID: nil) 
     taskViewController.delegate = self 
     presentViewController(taskViewController, animated: true, completion: nil) 
    } 

} 

extension HomeVC: ORKTaskViewControllerDelegate { 

    func taskViewController(taskViewController: ORKTaskViewController, didFinishWithReason reason: ORKTaskViewControllerFinishReason, error: NSError?) { 

    } 

} 
+0

Спасибо, что нашли время, чтобы ответить и предоставить код! Я добавил то, что вы предложили, и когда я нажимаю кнопку _survey_, приложение завершает работу и выдает ошибку SIGABRT_ _Thread 1: signal, консоль отладки предоставляет следующее сообщение: _Интерминирующее приложение из-за неперехваченного исключения «NSGenericException», причина: Каждый шаг должен иметь уникальный идентификатор'_ Я думал, что это могут быть соединения, которые я удалил выходы и код и правильно добавил розетки. Вы не знаете, почему эта ошибка возникает? – Nikolai

+0

Ничего, сортировка по выходу отладчика и обнаружение преступника. Спасибо за помощь! – Nikolai