Я занимаюсь разработкой приложения, которое позволяет пользователю войти в систему с помощью Facebook. Фрагмент кода, который я использую, использует swift 3 tho, и я не могу найти конвертер онлайн. Код swift 3 выглядит следующим образом:
В примере, приведенном в swift 3, Xcode предлагает:
request.start(completion: ((HTTPURLResponse?, GraphRequestResult<GraphRequest>) -> Void)?)
И затем вводит программист (это целая функция):
func getUserInfo(completion: @escaping (_ : [String: Any]?, _ : Error?) -> Void) {
let request = GraphRequest(graphPath: "me", parameters: ["fields" : "id,email,picture"])
request.start { response, result in
switch result {
case .failed(let error):
completion(nil, error)
case .success (let graphResponse):
completion(graphResponse.dictionaryValue, nil)
}
}
Когда я начинаю печатать:
request.start
, что дает мне эту строку кода:
request.start(completionHandler: GraphRequestBlock?)
Может кто-нибудь помочь мне преобразовать это из swift 3 в swift 5? Спасибо!
--- Код комментария ---
@ HardikS
Мой файл "HomeAfterLogInViewController.swift" выглядит следующим образом:
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()
}
И этот код работает, но мне нужен еще один шаг - объяснено на скриншоте: