我正在我的应用程序下注册使用facebook API和Parse的新用户。正在创建用户而不会转到另一个视图。不幸的是,如果我尝试为下一个视图设置,则创建的用户没有姓名和电子邮件信息。我知道这是在后台运行所以我需要一个解决方案来知道执行何时完成。有什么想法吗?
override func viewDidLoad() {
FBSDKProfile.enableUpdatesOnAccessTokenChange(true)
}
override func viewDidAppear(animated: Bool) {
if let access = FBSDKAccessToken.currentAccessToken() {
PFFacebookUtils.logInInBackgroundWithAccessToken(access, block: {
(user: PFUser?, error: NSError?) -> Void in
if user != nil {
println("already registred user")
self.performSegueWithIdentifier("firstView", sender: self)
} else {
println("Uh oh. There was an error logging in.")
}
})
}
}
@IBAction func fbLoginButtonTouchUpInside (sender: AnyObject) {
PFFacebookUtils.logInInBackgroundWithReadPermissions(["public_profile", "email", "user_friends"], block: { (user, error) in
if let user = user {
User.updateUserInfo()
println("new user")
//THIS SEGUE IS CRASHING
self.performSegueWithIdentifier("newUserSegue", sender: self)
} else {
println("Uh oh. The user cancelled the Facebook login.")
}
})
}
答案 0 :(得分:0)
试试这个。 AFAK你必须在主线程上执行它崩溃的原因:
dispatch_async(dispatch_get_main_queue()) {
self.performSegueWithIdentifier("newUserSegue", sender: self)
}
答案 1 :(得分:0)
这里的问题是我在
中运行了另一个后台任务 PFFacebookUtils.logInInBackgroundWithReadPermissions
解决方案是向User.updateUserInfo()
添加一个完成处理程序并在其中执行segue。