【发布时间】:2020-05-31 07:40:43
【问题描述】:
我使用 swiftlint 作为一种更好的编码方式,并且在大多数情况下,我已经能够通过以下代码混淆我的方式,其中包括强制向下转换:
let questionToAdd = MultipleChoiceQuestion(question: dictionary["Question"] as! String,
correctAnswer: dictionary["CorrectAnswer"] as! String,
answers: dictionary["Answers"] as! [String])
questions.append(questionToAdd)
我无法移除强制展开。任何建议将不胜感激。我曾尝试使用 ELSE { return } 但这也不起作用,可能是我的结构方式..尽管如此,任何帮助或指出我正确的方向将不胜感激。
【问题讨论】:
-
SwiftLint 是一个挑剔者。不仅有黑色和白色。强制展开本身并不邪恶。例如,如果数据是本地数据(包中的属性列表或 JSON 文件),则无法对其进行修改,并且强制解包值是 100% 安全的。如答案中所述,最好的方法是将
decode的数据直接转入MultipleChoiceQuestion。 -
同意瓦迪安。我在它自己的应用程序中使用了一个属性列表。在某个时候,我们会将其移至 firebase,在这种情况下它不再是问题。