Отображение изображения пользователя Facebook с использованием URL (Swift 5 | Xcode 10) - PullRequest
0 голосов
/ 23 января 2020

Я новичок в Swift 5 и в настоящее время разрабатываю приложение, для которого мне нужен SDK для входа в Facebook. Пользователь может успешно войти в систему, и код возвращает адрес электронной почты и URL-адрес изображения профиля пользователя. Однако я хочу, чтобы изображение профиля отображалось на раскадровке.

Моя раскадровка называется: "HomeAfterLogInViewController.swift" и выглядит следующим образом:

enter image description here

Код в этом файле:

import Foundation
import FacebookCore
import FacebookLogin

class HomeAfterLogInViewController: UIViewController
{
    override func viewDidLoad()
    {
        super.viewDidLoad()

        getFacebookProfileInfo()
    }
}

func getFacebookProfileInfo()
{
    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]
                        {
                            print(data)
                            print(dictData["email"]!)     
                      }
                  }
              }
          }
      })
      connection.start()
  }

Я нашел этот код в Интернете:

leturl = NSURL(data)  // holds url from facebook
let data = NSData(contentsOfURL: url)

imageURL.image = UIImage(data: data)

Но это дает мне эту ошибку:

enter image description here

Как мне написать нужный код?

Ответы [ 2 ]

0 голосов
/ 24 января 2020

Попробуйте приведенный ниже код.

func getFacebookProfileInfo() {
    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]
                        {
                            print(data)
                            print(dictData["email"]!)     

                            if let pictureURL = pictureData["url"] as? String { //image url of your image

                                   if let url = URL(string: pictureURL) {

                                       if let data = try? Data(contentsOf: url) { //here you get image data from url

                                          //generate image from data and assign it to your profile imageview
                                          imageView.image = UIImage(data: data) 
                                       }
                                   }
                            }
                      }
                  }
              }
          }
      })
      connection.start()
  }

Надеюсь, это поможет вам получить изображение по URL.

0 голосов
/ 23 января 2020
 if let pictureData: [String : Any] = dictData["picture"] as? [String : Any]
 {
     if let data : [String: Any] = pictureData["data"] as? [String: Any]
      {
           //Picture Url 
           print(data["url"] as! String)
       }
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...