1

在 ORKStepResult 的数组中找不到将简单答案作为字符串的逻辑或解决方案。它以前使用过这个:

                for stepResults in taskViewController.result.results! as! [ORKStepResult]  {
                for result in stepResults.results! {
                    switch result.identifier {
                    case "themaQuestionStep":
                        if let questionResult = result as? ORKQuestionResult {
                            questionResultThema  = String(questionResult.answer?.objectAtIndex(0))
                        }

经过一段时间的更新(swift & researchkit),它没有。这条线让我抓狂的是这个:

questionResultThema  = String(questionResult.answer?.objectAtIndex(0))

如果我这样做:

questionResultThema  = String(describing: questionResult.answer)

它给了我正确的回应,但在一个数组中:

    (
        6
    )>
4

1 回答 1

1

最好将您的结果对象转换为您期望的特定问题结果类型。这将使您能够访问各种子类的类型安全和更方便的属性。例如,如果您希望它是一个 ORKTextQuestionResult:

if let questionResult = result as? ORKTextQuestionResult {
    questionResultThema = questionResult.textAnswer
}

另一个例子(猜测为什么questionResult.answer数组适合你)。对于 ORKChoiceQuestionResult,您可以执行以下操作:

if let questionResult = result as? ORKChoiceQuestionResult,
    let answer = questionResult.choiceAnswers.first as? String {
    questionResultThema = answer
}
于 2017-09-21T13:54:20.703 回答