Ich versuche, die Benutzer fb profile pic zu holen, konnte aber nicht so weit tun. Ich versuche etwas Einfaches zu tun: Der Benutzer loggt sich mit dem fb-Account ein und die App wechselt zu einer anderen Ansicht, in der sein Name, seine E-Mail-Adresse und sein Profilbild angezeigt werden. Benutzername und E-Mail sind in Ordnung, aber ich kann das Bild nicht sehen!Wie erfahre ich Facebooks Profilbild?
Die App stürzt mit meinem eigentlichen Code, weil offenbar einen Null optionalen Wert ich auspacken, aber ich weiß nicht, warum es gleich Null ist.
Mein Code:
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
let graphRequest : FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "me", parameters: ["fields":"id,email,name,picture.width(480).height(480)"])
graphRequest.startWithCompletionHandler({ (connection, result, error) -> Void in
if ((error) != nil)
{
// Process error
print("Error: \(error)")
}
else
{
print("fetched user: \(result)")
let userName : NSString = result.valueForKey("name") as! NSString
print("User Name is: \(userName)")
let userEmail : NSString = result.valueForKey("email") as! NSString
print("User Email is: \(userEmail)")
let id = result.valueForKey("id") as! String
self.nameLabel.text = userName as String
self.emailLabel.text = userEmail as String
self.profilePic.image = self.getProfPic(id)
}
})
}
func getProfPic(fid: String) -> UIImage? {
if (fid != "") {
let imgURLString = "http://graph.facebook.com/" + fid + "/picture?type=large" //type=normal
let imgURL = NSURL(string: imgURLString)
let imageData = NSData(contentsOfURL: imgURL!)
let image = UIImage(data: imageData!) // CODE CRASHES IN HERE
return image
}
return nil
}
Offensichtlich 'imageData' ist' nil', die die URL bedeutet nicht korrekt ist. Warum nicht die Methode 'NSData' verwenden, die eine Ausnahme auslöst, damit Sie sehen können, warum sie fehlschlägt. – rmaddy
Klicken Sie in Xcode im Projektnavigator auf die Schaltfläche "Show Breakpoint Navigator". Klicken Sie dann auf das Pluszeichen in der unteren linken Ecke des Bildschirms. Klicken Sie auf "Ausnahme Breakpoint hinzufügen". Das sollte einen Haltepunkt hinzufügen, wenn eine Ausnahme auftritt. Dann können Sie 'po' eingeben und sehen, ob eine Speicheradresse/Wert zugeordnet ist. Das sollte dir eine Richtung geben: wohin du guckst. –
Adrian
In der Funktion getProfPic: let image = UIImage (Daten: imageData!) // CODE CRASHES IN HIER Ich tat, aber der größte Teil des Codes, den ich fand, war in Obj-c und nur ein paar in Swift. Dies war eines der Beispiele, die ich in einer ähnlichen Frage hier im Stackoverflow fand. –