我检查用户的Facebook数据是否为UserDefaults.standard.value
<div class="pure-progress" data-progress="30%">
<div class="pure-progress--bar" style="width:30%"></div>
</div>
我收到以下警告: 类型为&#39; [String:Any]&#39;的非可选表达式用于检查选项
如果未设置UserDefaults.standard.value(forKey:&#34; facebookDetails&#34;),和应用程序崩溃。
编写此条件的正确方法是什么?
由于
答案 0 :(得分:4)
您完全滥用了选项,强制解包和if let
。
您还应该避免使用value(forKey:)
。并避免不必要的类型声明。让Swift在适当的时候推断出类型。
您的if
应该是:
if let facebookDetails = UserDefaults.standard.dictionary(forKey: "facebookDetails") {
}
除非您确定值(或演员表)将始终成功,否则您还应该避免强行展开。
在代码中保持一致。在一行上你做了:
let picture:Dictionary = (facebookDetails["picture"] as? [String:Any])!
和你做的另一个:
let fb_pic_data_url:String = fb_pic_data["url"] as! String
为什么采用两种不同的方法来强制案例和可选的?