我在AppDelegate中有一个名为inScreenshotmode的变量:

#if DEBUG
var inScreenshotMode: Bool {
    return UserDefaults.standard.bool(forKey: "abc")
}
#else // Release
let inScreenshotMode = false
#endif

那么我如何优化下面的代码呢?
    let totalValue = appDelegate?.inScreenshotMode == true ? basicInfo.value : configuration.value

如果我做了
let totalValue = appDelegate?.inScreenshotMode ? basicInfo.value : configuration.value

我得到错误:
可选类型“Bool?”的值没有打开包装;你是不是想用'!'或'?'?替换appDelegate?.inScreenshotMode“与
“(appDelegate?.inScreenshotMode)!'
什么是最好的解决方案?

最佳答案

问题是appDelegate?.inScreenshotMode确实是可选的,这意味着它可以返回nil。因为nil是等价的,所以部分appDelegate?.inScreenshotMode == true将始终返回truefalse。但单独使用appDelegate?.inScreenshotMode可以返回truefalsenil

关于swift - 代码清理Swift,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49295163/

10-10 21:05