【发布时间】:2020-05-09 00:43:57
【问题描述】:
我正在开发一个允许用户使用 Facebook 登录的应用程序。我拥有的代码 sn-p 虽然使用的是 Swift 3,但我在网上找不到转换器。 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?
评论后更新
我的“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()
}
这段代码有效,但我还需要一步 - 在屏幕截图中解释:
【问题讨论】:
标签: ios facebook-graph-api swift3 facebook-sdk-4.0 swift5