gpt4 book ai didi

ios - 从 FBSDKGraphRequest 到 Storyboard

转载 作者:行者123 更新时间:2023-11-28 15:10:56 24 4
gpt4 key购买 nike

我是编码的新手,但我有一个大问题:)

我不知道如何从 FBSDKGraphRequest 获取信息以显示在主 Storyboard上。

接下来我应该怎么做才能将图片添加到 Storyboard?我希望有人能帮助我:)

使用 Swift 3、Xcode 8

Facebook 登录正常,代码为:

    func getFBUserData(){
if((FBSDKAccessToken.current()) != nil){
FBSDKGraphRequest(graphPath: "me", parameters: ["fields": "id, name, first_name, last_name, picture.type(large), email"]).start(completionHandler: { (connection, result, error) -> Void in
if (error == nil){
self.dict = result as? [String : AnyObject]
print(result!)
print(self.dict)
}
})
}

最佳答案

我将其视为四个步骤 - 如果您已经了解其中的一些内容,我向您表示歉意。

  1. 将 UIImageView 从界面生成器中的对象库拖到 Storyboard 中的 View 。

  2. 将 UIImageView 作为 IBOutlet 连接到您的代码并为其命名。通过控制从新的 UIImageView 拖动到您的代码来执行此操作,然后在弹出窗口中指定一个导出并命名 UIImageView。就我而言,我将其命名为“facebookPicture”

  3. 从 FaceBook 结果中获取图像的 URL。以下示例代码逐步深入到结果字典。有很多方法可以缩短它。

    @IBOutlet var facebookPicture: UIImageView!

    func getFBUserID(){
    if((FBSDKAccessToken.current()) != nil) {
    FBSDKGraphRequest(graphPath: "me", parameters: ["fields": "id, name, first_name, last_name, picture.type(large), email"]).start(
    completionHandler: {
    [weak self] (connection, result, error) -> Void in
    guard let strongSelf = self else { return }
    if let error = error {
    print("Failed to download FB user with error:. \(error)")
    }
    if (error == nil) {
    let resultDictSwift = result as! Dictionary<String, Any>
    if let picture = resultDictSwift["picture"] as? Dictionary<String, Any> {
    if let pictureData = picture["data"] as? Dictionary<String, Any> {
    if let pictureURL = NSURL(string: (pictureData["url"] as? String)! ) {
    strongSelf.downloadImage(url: pictureURL as URL)
    }
    }
    }
    print(result!)
    let FBID = resultDictSwift["id"]
    strongSelf.facebookID = FBID as! String?
    print("User FB id: \(strongSelf.facebookID!)")
    }
    })
    }
    }
  4. 从 URL 位置下载图像。以下异步执行此操作并使用先前的堆栈溢出答案 here下载完成后,它将下载结果设置为您的 UIImageView 中的图像

    func getDataFromUrl(url: URL, completion: @escaping (Data?, URLResponse?, Error?) -> ()) {
    URLSession.shared.dataTask(with: url) { data, response, error in
    completion(data, response, error)
    }.resume()
    }

    func downloadImage(url: URL) {
    print("Download Started")
    getDataFromUrl(url: url) { data, response, error in
    guard let data = data, error == nil else { return }
    print(response?.suggestedFilename ?? url.lastPathComponent)
    print("Download Finished")
    DispatchQueue.main.async() {
    self.facebookPicture.image = UIImage(data: data)
    }
    }
    }

希望对您有所帮助!

关于ios - 从 FBSDKGraphRequest 到 Storyboard,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47640211/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com