Отображение изображения Facebook пользователя с помощью Graph API в Swift 5 - PullRequest
0 голосов
/ 23 января 2020

Мое приложение может успешно получить URL-адрес изображения профиля пользователя в виде ссылки и распечатать его на консоли. Однако я преобразую эту ссылку в изображение, которое отображается в UIImageView в файле раскадровки.

Код выглядит следующим образом:

import Foundation
import FacebookCore
import FacebookLogin

class HomeAfterLogInViewController: UIViewController
{
    // Links to UIImageView on storyboard
    @IBOutlet weak var imageView: UIImageView!

    override func viewDidLoad()
    {
        super.viewDidLoad()

        let requestMe = GraphRequest.init(graphPath: "me", parameters: ["fields" : "id,name,email,picture.type(large)"])

        let connection = GraphRequestConnection()

        connection.add(requestMe, completionHandler:{ (connectn, userresult, error) in

            if let dictData: [String : Any] = userresult as? [String : Any]
                {
                    DispatchQueue.main.async
                        {
                            if let pictureData: [String : Any] = dictData["picture"] as? [String : Any]
                            {
                                if let data : [String: Any] = pictureData["data"] as? [String: Any]
                                {
                                    // prints out url of profile
                                    print(data["url"] as! String)
                                }
                            }
                        }
                  }
              })
              connection.start()
          }

    }

Я нашел несколько битов кода, но ни один из них не работал.

Ответы [ 2 ]

1 голос
/ 23 января 2020

Вы можете использовать эту библиотеку под названием Haneke , она действительно хороша для кэширования и добавляет некоторые полезные методы, после ее установки вы можете сделать что-то вроде этого

   guard let url = URL(string: urlAsString) else { return }
   yourImageView.hnk_setImageFromURL(url)
0 голосов
/ 24 января 2020

Ответ на весь вопрос:

import Foundation
import FacebookCore
import FacebookLogin
import Haneke

class HomeAfterLogInViewController: UIViewController
{
    // Links to UIImageView on storyboard
    @IBOutlet weak var imageView: UIImageView!

    override func viewDidLoad()
    {
        super.viewDidLoad()

        let requestMe = GraphRequest.init(graphPath: "me", parameters: ["fields" : "id,name,email,picture.type(large)"])

        let connection = GraphRequestConnection()

        connection.add(requestMe, completionHandler:{ (connectn, userresult, error) in

            if let dictData: [String : Any] = userresult as? [String : Any]
                {
                    DispatchQueue.main.async
                        {
                            if let pictureData: [String : Any] = dictData["picture"] as? [String : Any]
                            {
                                if let data : [String: Any] = pictureData["data"] as? [String: Any]
                                {
                                    // prints out url of profile
                                    print(data["url"] as! String)

                                    guard let url = URL(string: (data["url"] as! String)) else { return }
                                    self.imageView.hnk_setImageFromURL(url)
                                }
                            }
                        }
                  }
              })
              connection.start()
          }

    }
...