Устранение вынужденных ударов - PullRequest
0 голосов
/ 16 февраля 2020

Я использую swiftlint как способ лучше кодировать, и по большей части мне удалось запутаться в следующем коде, который включает принудительное понижение:

let questionToAdd = MultipleChoiceQuestion(question: dictionary["Question"] as! String,
            correctAnswer: dictionary["CorrectAnswer"] as! String,
            answers: dictionary["Answers"] as! [String])
           questions.append(questionToAdd)

У меня есть не удалось удалить принудительное развертывание. Любые предложения будут ценны. Я пытался использовать ELSE {return}, но это тоже не сработало, может быть, так, как я его структурировал ... тем не менее, любая помощь или указание мне в правильном направлении будут оценены.

1 Ответ

1 голос
/ 16 февраля 2020

Альтернативой принудительному приведению является дополнительное приведение с использованием as?. Обычно вы распаковываете результаты этих приведений, а затем используете значения, например:

guard let question = dictionary["Question"] as? String, 
    let answer = dictionary["CorrectAnswer"] as? String,
    let answers = dictionary["Answers"] as? [String] else { return }

questions.append(MultipleChoiceQuestion(question: question, answer: answer, answers: answers))

Однако, поскольку похоже, что вы декодируете что-то вроде JSON, лучшим выбором будет реализуйте Decodable для вашего MultipleChoiceQuestion типа, сделайте это преобразование для вас.

...