gpt4 book ai didi

ios - Swift 如何关闭 Facebook 图 block

转载 作者:行者123 更新时间:2023-11-30 14:10:09 27 4
gpt4 key购买 nike

我想要,但我不知道如何 =(,关闭我的 Facebook 图表 block

我的问题是,我想将用户 facebook 的用户名保存在变量中以便稍后使用(另一个 View Controller ),但我不能,因为在我尝试保存数据后我的 block 已关闭。

这是我的委托(delegate)函数:

    // Facebook Delegate Methods
func loginButton(connection: FBSDKLoginButton!, didCompleteWithResult result: FBSDKLoginManagerLoginResult!, error: NSError!) {

if (error != nil)
{
println("Error")
}
else {
println("User logged in")
self.returnUserData()
}
}

这是我使用 facebook graph api 的函数

// Here my block that I want to close, maybe with completion closure inside
func returnUserData()
{
let graphRequest : FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "me", parameters: ["fields": "id, name, first_name, last_name, picture.type(large), email"])
// Launch asynchronous function
var userName : String = "error"
graphRequest.startWithCompletionHandler({ (connection, result, error) -> Void in

if ((error) != nil)
{
// Process error
println("Error: \(error)")
}
else
{
println(result)
userName = result["first_name"] as! String
}
})
}

有人可以帮我吗?

最佳答案

看一下这个示例,您可以将变量设置在闭包范围之外,然后要求它在设置值时执行特定的函数,如下所示:

import UIKit

class ViewController: UIViewController {

var myString : String = "123" {

didSet {

self.stringUpdated()
}

}

override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.

myString = "456" // this would take place in your graph request closure
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}

func stringUpdated() {

println("got it, string is \(myString)")
}


}

关于ios - Swift 如何关闭 Facebook 图 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31863780/

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