ich überprüfen, ob ich Benutzers Facebook-Daten als UserDefaults.standard.value habenÜberprüfung für eine optionale 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
}
}
erhalte ich die folgende Warnung: Nicht optional Ausdruck vom Typ ‚[String: Any] 'in einer Prüfung für Optionals verwendet
und App stürzt ab, wenn UserDefaults.standard.value (forKey: "facebookDetails") ist nicht festgelegt.
Was ist die richtige Art, diese Bedingung zu schreiben, wenn?
Dank
Verwenden Sie nicht 'value (forKey:)', um ein Objekt von 'UserDefaults' zu erhalten. Verwenden Sie die Methode 'object (forKey:)' oder eine der vielen typspezifischen Methoden wie 'dictionary (forKey:)' oder 'string (forKey:)' usw. – rmaddy
und löschen Sie das Ausrufezeichen am Ende des Ausdrucks –