我最近开始了一个项目,其中有大量的力展开被使用,因为XCode建议将其作为修复,只要有人需要打开可选项。毋庸置疑,有很多崩溃因此我们有一个大的重构来删除所有崩溃,支持可选绑定,将属性设置为非可选,nil-coalescing并允许函数采用可选值。我们在编码指南中禁止使用它们,并开始使用swiftlint来确保人们不要将它们重新放入(使用swiftlint时强制解包被标记为警告)。
但是我继续遇到下面这样的情况,我100%确定该值不是nil(在这种情况下,我们已经检查过数组在排序之前不是空的)。使用if let
并且有点奇怪允许findProvider
接受选项作为参数感觉很浪费但是如果我把它留在快速lint会标记它,我们禁止强制解包就必须去,我猜有人可以切实改变这段代码,因此sortedParsedNumbers.first
为nil
。在这里做的最好的事情是什么?
if meeting.phoneNumbers.isEmpty || Settings.prioritizeSettingsNumbers {
return settingsNumber ?? derivedLocationNumber
}
let sortedParsedNumbers = sortParsedNumbers(meeting: meeting)
let providerMismatch = ConferenceNumberDirectory.findProvider(forNumber: sortedParsedNumbers.first!)