gpt4 book ai didi

ios - 从 Facebook FBSDK iOS 4.x(使用 Swift)获取值(value)?

转载 作者:可可西里 更新时间:2023-11-01 01:37:26 24 4
gpt4 key购买 nike

如何让所有函数在访问 facebookData 变量之前稍等片刻?由于网络调用是异步的,因此在从 Facebook 获取值之前访问 facebookData。

请从资料中找到以下代码。

func graphRequestToReturnUserData(graphParameters: Dictionary<String, String>) {

let graphRequest : FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "me", parameters: graphParameters)
graphRequest.startWithCompletionHandler({ (connection, result, error) -> Void in
if ((error) != nil) {
print("Error: \(error.localizedDescription)") /*Error Handling*/
}else {
self.facebookData = result as! NSDictionary
}
})
}

我不想像这样调用函数:-

   if ((error) != nil) {
print("Error: \(error.localizedDescription)") /*Error Handling*/
}else {
self.facebookData = result as! NSDictionary
self.printFacebookData()
}
})
}

func printFacebookData() {
print(self.facebookData)
}

最佳答案

由于我找到了适合我的情况的解决方案,因此我将在此处发布它以供更多人阅读,并可能对其发表评论以进一步改进。

这里的简单解决方案是使用属性观察器并在属性更改后立即调用一个函数。无需弄乱线程或使用信号量。

解决方案代码现在看起来像这样:-

class facebookGraphRequest {

static var facebookData = NSDictionary()

//Property Observer, willSet-didSet

var facebookD = NSDictionary() {

didSet {
facebookGraphRequest.facebookData = facebookD //Assigning values to the static class variable
facebookUserSignUpLogIn().checkUserExistsOrNot() //Calling a function from the other class
}
}


//Mark: GraphRequestForFetchingUserData

func graphRequestToReturnUserData(graphParameters: Dictionary<String, String>) {
let graphRequest : FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "me", parameters: graphParameters)
graphRequest.startWithCompletionHandler({ (connection, result, error) -> Void in
if ((error) != nil) {
print("Error: \(error.localizedDescription)") //Error Handling
} else {
self.facebookD = result as! NSDictionary
}
})
}
}

这里,第一部分是属性观察器(willSet-didSet),然后是获取用户数据的 GraphAPI 调用。很快 facebookD 变量被设置为一个值;从 class facebookUserSignUpLogIn 调用函数 checkUserExistsOrNot() 以进行进一步的操作。

关于ios - 从 Facebook FBSDK iOS 4.x(使用 Swift)获取值(value)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35222775/

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