2016-07-08 10 views
0

Ich treffe Facebook-Grafik, um grundlegende Benutzerinformationen zu ziehen, wenn der Benutzer anmeldet. Meine Frage ist, wie verwende ich swift, um diese Informationen auf die beste Weise zu speichern/ziehen dass es danach in den Kind-Viewcontrollern bestehen bleibt (im Grunde alles nach dem Login). Zum Beispiel möchte ich in der gesamten App nach dem Login-Bildschirm das Profil pic als Schaltfläche Einstellungen verwenden (in nicht) in die Anmeldungs ​​View-Controller ich diese einen entsprechenden Code haben:Speichern von api Facebook-Daten für die Verwendung in verschiedenen ViewController Swift iOS

let userImageView: UIImageView = { 
    let imageView = UIImageView() 

    return imageView 
}() 

let nameLabel: UILabel = { 
    let label = UILabel() 

    return label 
}() 

und dann später:

func fetchProfile() { 
    let parameters = ["fields": "email, first_name, last_name, picture.type(large)"] 
    FBSDKGraphRequest(graphPath: "me", parameters: parameters).startWithCompletionHandler({ (connection, user, requestError) -> Void in 

     if requestError != nil { 
      print(requestError) 
      return 
     } 

     var _ = user["email"] as? String 
     let firstName = user["first_name"] as? String 
     let lastName = user["last_name"] as? String 

     self.nameLabel.text = "\(firstName!) \(lastName!)" 

     var pictureUrl = "" 

     if let picture = user["picture"] as? NSDictionary, data = picture["data"] as? NSDictionary, url = data["url"] as? String { 
      pictureUrl = url 

     } 

     let url = NSURL(string: pictureUrl) 
     NSURLSession.sharedSession().dataTaskWithURL(url!, completionHandler: { (data, response, error) -> Void in 
      if error != nil { 
       print(error) 
       return 
      } 

      let image = UIImage(data: data!) 
      dispatch_async(dispatch_get_main_queue(), {() -> Void in 
       self.userImageView.image = image 
      }) 

     }).resume() 

    }) 
} 

Was muss ich tun, um in meinem zweiten ViewController darauf zuzugreifen? Von dem, was ich verstehen kann, helfen Übergänge nur, wenn ich ein physisches Attribut in der ersten ViewController habe, um sie von ihnen zu schieben.

Dank

Antwort

0

Der beste Weg, Bilder zu speichern mit Dokumenten-Verzeichnis wird als Core Data ist nicht für Dateien so groß wie Bilder optimiert. Sie würden wollen, wie so das Foto in Dokumenten-Verzeichnis speichern ......

func saveImageDocumentDirectory(){ 
     let fileManager = NSFileManager.defaultManager() 
     let paths = (NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as NSString).stringByAppendingPathComponent(*** Name of DocDir Image***) 
     let image = // *** Your Facebook Image *** 
     print(paths) 
     let imageData = UIImageJPEGRepresentation(image!, 0.5) 
     fileManager.createFileAtPath(paths as String, contents: imageData, attributes: nil) 
    } 

Dann in Ihrem Viewcontroller (n) ein leeres Bild in der Öffentlichkeit schaffen var fbImage:UIImage() dann eine getImage Funktion und Code erstellen, wie folgt ... ..

func getImage() 
{ 
      let fileManager = NSFileManager.defaultManager() 
      let imagePAth = (self.getDirectoryPath() as NSString).stringByAppendingPathComponent(*** Name of Your DocDir Image ***) 
      if fileManager.fileExistsAtPath(imagePath){ 
       self.fbImage.image = UIImage(contentsOfFile: imagePath) 
      }else{ 
       print("No Image Saved") 
      } 
     }