2016-07-12 10 views
0

Die neue Firebase lässt Sie eine NSURL-Profilbildeigenschaft für den Benutzer haben, aber ich habe Probleme, sie anzuzeigen. Hier ist, wie ich es bin Speichern ......Wie Profilbild von neuem Firebase in iOS Swift angezeigt wird?

let user = FIRAuth.auth()?.currentUser 
if let user = user { 
    let changeRequest = user.profileChangeRequest() 
    changeRequest.photoURL = searchURL 
    changeRequest.commitChangesWithCompletion { error in 
     if let _ = error { 
      print("Try Again") 
     } else { 
      print("Photo Updated") 
      self.profileImage.image = image 
     } 
    } 
} 

Und das ist, wie ich versuche, es zu zurückzuholen ....

if let user = FIRAuth.auth()?.currentUser 
{ 
    let name = user.displayName 
    let pic = user.photoURL 
    self.displayNameLBL.text = name 
    if pic != nil 
    { 
     print(pic!) 
     let urlString: String = pic!.path! 
     self.profileImage.image = UIImage(named: urlString) 
     //self.profileImage.image = UIImage(data: pic! as NSURL) 
    }else 
    { 
     self.profileImage.image = UIImage(named: "imagePlaceholder") 
    } 
} 

Ich erhalte user.displayName aber nicht das Bild.

Antwort

1

Sie versuchen, eine URL angezeigt werden Sie nicht ein Bild benötigen um das Bild herunterzuladen ersten können Sie diese Erweiterung verwenden:

extension UIImageView { 
     func downloadedFrom(link: String, contentMode mode: UIViewContentMode = .ScaleAspectFit) { 
      guard let url = NSURL(string: link) else { return } 
      contentMode = mode 
      NSURLSession.sharedSession().dataTaskWithURL(url) { (data, response, error) in 
       guard 
        let httpURLResponse = response as? NSHTTPURLResponse where httpURLResponse.statusCode == 200, 
        let mimeType = response?.MIMEType where mimeType.hasPrefix("image"), 
        let data = data where error == nil, 
        let image = UIImage(data: data) 
        else { return } 
       dispatch_sync(dispatch_get_main_queue()) { 
        self.image = image 
       } 
       }.resume() 
     } 
    } 

Nutzung:

imageView.downloadedFrom(stringURL, contentMode: .ScaleAspectFill) 
+0

Das funktioniert nicht. Wo hast du 'stringURL'? Ich bin mir nicht sicher, ob ich es richtig vom UIImagePicker abspeichere. –