ResearchKit - Как пропустить или добавить новые вопросы в опрос во время его проведения?

У меня есть три вопроса, которые нужно задать, если пользователь ответил 2 или более "Да". В настоящее время в опросе 12 вопросов. Если пользователь ответит "да" на два или более вопросов, я хочу добавить еще 3 вопроса. (ИЛИ я всегда добавляю 3 дополнительных вопроса в свою ORKOrderedTask, а затем я пропускаю последние 3 вопроса, если пользователь не ответил "Да" на 2 или более вопросов).

Я поигрался с "taskViewController didChange", который позволяет мне проверить, является ли текущий ответ на текущий вопрос "да" или "нет". У меня есть счетчик, который продолжает увеличиваться, если ответ "да".

Теперь мне просто нужно добавить 3 новых вопроса, если счетчик достигнет 2. (ИЛИ пропустить последние 3 вопроса, если счетчик никогда не достигнет 2.)

РЕШЕНИЕ

Вместо того, чтобы изменять текущий опрос, проще просто создать новый опрос, как только первый опрос будет завершен. Для меня, я просто должен был проверить, сколько раз пользователь ответил "Да". Поэтому я использовал этот код в "didFinish" (функция, которая выполняется после завершения опроса), чтобы проверить мои ответы:

    //If reason.rawValue is 2,then survey was successfully completed.
    if(reason.rawValue == 2){
      if let results = taskViewController.result.results as? [ORKStepResult] {
          for stepResult: ORKStepResult in results {
              for result in ([ORKResult]?(stepResult.results!))!{
                  if let questionResult = result as? ORKQuestionResult {
                      print("\(questionResult.answer!)") // This print each answer
                  }
              }
          }
      }
   }

Затем вы делаете то, что вам нужно сделать с ответами, а затем вы звоните:

let viewController = self.storyboard?.instantiateViewController(withIdentifier: "IdentifierInYourStoryboard") taskViewController.present(viewController, animated: true, completion: nil)

Или сделайте переход или любой другой метод перехода, который вы хотите использовать. Я использовал раскадровки.

0 ответов

Другие вопросы по тегам