确定Swift字典是否不包含键并设置默认值

时间:2018-07-08 14:58:59

标签: swift dictionary

我有一个测验应用程序,在该应用程序中,用户可以选择答案或否。如果用户跳过没有答案的问题,我想为该问题添加字典0值。如果选择A,我为B加1,然后加2,直到E。在我的问题1中,键:1->代表问题1,值:1->代表A答案。如果用户选择一个选项,我将添加词典。如果用户跳过而没有任何答案,那么我不会添加答案。

function cancelSession() {
  console.log($(this).data('sessionID'));
}

我的问题从这里开始。我想添加键= 3,键= 5,键= 8默认值=0。我的问题总计为20。我该怎么办?

2 个答案:

答案 0 :(得分:1)

您可以创建答案的结构并轻松管理它,如以下代码所示:

struct Answer {
    var questionId: Int
    var answerValue: Int?
}

let answer1 = Answer(questionId: 1, answerValue: 5)
let answer2 = Answer(questionId: 2, answerValue: nil)

let arrAnswers = [answer1, answer2]

如果要将nil值替换为0,则可以使用以下函数:

let arrNewAnswers = arrAnswers.flatMap { (answer) -> Answer in
    if answer.answerValue == nil {
        return Answer(questionId: answer.questionId, answerValue: 0)
    }
    return answer
}

输出:

第一个数组包含nil值

  

打印(arrAnswers)

     

[答案(questionId:1,answerValue:可选(5)),Answer(questionId:2,answerValue:nil)]

第二个数组将0更新为nil。

  

print(arrNewAnswers)

     

[答案(questionId:1,answerValue:可选(5)),answer(questionId:2,answerValue:可选(0))

我希望这对您有帮助。

答案 1 :(得分:0)

如果您只使用以全0初始化的整数数组,对我来说似乎更容易,例如:

var answers = [Int](repeating: 0, count: 20)

然后,当用户回答“索引”问题时,您只需执行以下操作:

answers[index] = userAnswer //A number based on the choices option

或者您可以通过以下方式访问问题的答案:

userSaidForIndexQuestion = answers[index] //Will be 0 if you never add an answer

希望有帮助...