1
我檢查我是否有用戶的Facebook數據UserDefaults.standard.value檢查可選UserDefaults.standard.value
if let facebookDetails:Dictionary = (UserDefaults.standard.value(forKey: "facebookDetails") as? [String:Any])! {
dump(facebookDetails)
let picture:Dictionary = (facebookDetails["picture"] as? [String:Any])!
let fb_pic_data:Dictionary = (picture["data"] as? [String:Any])!
let fb_pic_data_url:String = fb_pic_data["url"] as! String
if let checkedUrl = URL(string: fb_pic_data_url) {
profiler.contentMode = .scaleAspectFit
downloadImage(url: checkedUrl)
profiler.layer.borderWidth = 1
profiler.layer.masksToBounds = false
profiler.layer.borderColor = UIColor.black.cgColor
profiler.layer.cornerRadius = profiler.frame.height/2
profiler.clipsToBounds = true
}
}
我得到以下警告:String類型的「[ 非可選表達式:任何]'用於支付可選項
和應用程序崩潰,如果UserDefaults.standard.value(forKey:「facebookDetails」)未設置。
寫這個條件的正確方法是什麼?
感謝
不要使用'value(forKey:)'從'UserDefaults'中獲取對象。使用'object(forKey:)'方法或多種類型特定的方法之一,例如'dictionary(forKey :)'或'string(forKey :))等。 – rmaddy
並在表達式末尾放置感嘆號 –