我有一个viewController来处理用户对oAuth API的身份验证。如果user.defaults中存在已存储的令牌,则此块运行
FRDStravaClient.sharedInstance().fetchCurrentAthlete(success: { (StravaAthlete) -> Void in
self.performSegue(withIdentifier: "AuthorizeSuccessfulSegue", sender: StravaAthlete.self)
}, failure: { (Error) in
//some failure stuff
})
触发segue并且用户移动到应用程序的其余部分。
但是,如果用户在授权后返回应用程序时需要登录,则此块将运行:
FRDStravaClient.sharedInstance().exchangeToken(forCode: code,
success: { (response: StravaAccessTokenResponse? ) in
self.performSegue(withIdentifier: "AuthorizeSuccessfulSegue", sender: response?.athlete)
}, failure:{ (error) -> Void in
self.showAuthFailedWithError(error: (error?.localizedDescription)!)
print(error!)
})
该应用程序因错误而崩溃:' Receiver()没有带标识符的segue' AuthorizeSuccessfulSegue''
两个成功块都使用在Interface Builder中正确设置的相同标识符。 self正在引用AuthViewController。为什么一个工作而另一个工作正在崩溃?
答案 0 :(得分:0)
问题是第一个函数发生在viewDidLoad
内,而第二个函数发生在appDelegate调用的VC函数中,当你从Safari返回并授权应用程序时。我正在实例化一个新的AutViewController而不是获取当前实例。