gpt4 book ai didi

ios - 从函数返回数据 (Swift)

转载 作者:搜寻专家 更新时间:2023-10-31 22:00:34 24 4
gpt4 key购买 nike

我正在尝试返回结果并能够从此函数访问结果数组。一切都在函数中工作,但是我不能返回任何东西或访问结果或从闭包外部在函数内部创建的任何变量。我想从闭包外部访问 result.valueForKey("id") 。我该怎么做?

class ViewController: UIViewController, FBSDKLoginButtonDelegate {

var facebookid: NSString = ""
var username: NSString = ""
var userEmail:NSString = ""

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

if (FBSDKAccessToken.currentAccessToken() == nil)
{
let loginView : FBSDKLoginButton = FBSDKLoginButton()
self.view.addSubview(loginView)
loginView.center = self.view.center
loginView.readPermissions = ["public_profile"]
loginView.delegate = self

} else {

returnUserData()

println(facebookid) // This doesn't work

}
}



func returnUserData()
{

let graphRequest : FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "me", parameters: nil)
graphRequest.startWithCompletionHandler({ (connection, result, error) -> Void in

if ((error) != nil)
{
// Process error
println("Error: \(error)")
}
else
{

self.facebookid = result.valueForKey("id") as NSString!
self.username = result.valueForKey("name") as NSString!
self.userEmail = result.valueForKey("email") as NSString!
println(result) // This works


}
})
}

编辑:我确实根据下面的 2 个答案更改了代码,但我仍然无法在 viewDidLoad 闭包上获得任何数据返回。* println(facebookid) 在 ViewDidLoad 中不返回任何内容,而在函数的闭包内返回任何内容。

最佳答案

您在闭包内创建变量意味着它们只能在内部访问。

您需要在类的顶部在函数外部创建变量。

例如

 class YourClassName {

var facebookid
var username
var userEmail


func returnUserData()
{
let graphRequest : FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "me", parameters: nil)
graphRequest.startWithCompletionHandler({ (connection, result, error) -> Void in

if ((error) != nil)
{
// Process error
println("Error: \(error)")
}
else
{
self.facebookid = result.valueForKey("id") as? String
self.userName = result.valueForKey("name") as? String
self.userEmail = result.valueForKey("email") as? String

}
})
}
}

关于ios - 从函数返回数据 (Swift),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29561511/

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