iOS / FBSDK - FBSDKProfile在设备上为零,在模拟器上运行正常

时间:2015-10-27 12:12:32

标签: ios objective-c facebook swift fbsdk

根据标题,我在我的设备上测试时得到nil可选的解包错误,而不是模拟器 - 我发现这是对FBSDKProfile.currentProfile.name或类似的调用的原因。我记得这在我在模拟器中进行开发时会让我感到痛苦,我在用户登录时通过添加FBSDKProfile.enableUpdatesOnAccessTokenChange(true)来修复它,如果他们已经登录,则会在应用程序加载时修复它。

任何人都有此问题的经验或对解决方案有任何想法?很高兴发布代码,如果有人认为它会有所帮助。

谢谢!

1 个答案:

答案 0 :(得分:0)

出现此问题的原因是FBSDKProfile需要几秒钟才能加载,我没有给它时间,因此尝试使用零值。

因此,解决方案是拥有占位符值,并监听FBSDK通知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))
}

希望这可以帮助任何偶然遇到同样问题的人。