0

根据标题,在我的设备上测试时,我得到 nil Optional unwrapping 错误,但在模拟器上没有 - 我发现导致此问题的原因是调用FBSDKProfile.currentProfile.name或类似的。我记得这在模拟器中开发时给我带来了痛苦,我通过添加FBSDKProfile.enableUpdatesOnAccessTokenChange(true)用户登录时以及如果他们已经登录,则在应用程序加载时添加来修复它。

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

谢谢!

4

1 回答 1

0

这个问题的原因是 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))
}

希望这可以帮助任何偶然发现与我相同的问题的人。

于 2015-11-03T12:56:49.163 回答