按照标题,在我的设备(而非模拟器)上进行测试时,我收到nil可选的解包错误-我发现导致此问题的原因是调用FBSDKProfile.currentProfile.name或类似方法。我记得这使我在模拟器中开发时感到痛苦,并且通过在用户登录时(如果他们已经登录)和应用程序加载时添加了FBSDKProfile.enableUpdatesOnAccessTokenChange(true)来修复它。

是否有人对此问题有经验或对解决方案有任何想法?如果有人认为有帮助,很乐意发布代码。

谢谢!

最佳答案

出现此问题的原因是FBSDKProfile需要花费几秒钟来加载,而我没有给它时间,因此尝试使用nil值。

因此,解决方案是拥有占位符值,并监听FBSDK Notification FBSDKProfileDidChangeNotification,并在完成后更新这些值。

这是代码:

viewDidLoad方法中:

NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("onFBProfileUpdated:"), name: FBSDKProfileDidChangeNotification, object: nil)


还有一个单独的方法:

func onFBProfileUpdated(notification: NSNotification) {
    nameLabel.text = FBSDKProfile.currentProfile().name

    setImage(FBSDKProfile.currentProfile().imageURLForPictureMode(FBSDKProfilePictureMode.Square, size: image.frame.size))
}


希望这对遇到我同样问题的人有所帮助。

关于ios - iOS/FBSDK-FBSDKProfile在设备上为零,在模拟器上可以正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33367710/

10-12 02:53