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

Posted

技术标签:

【中文标题】iOS/FBSDK - FBSDKProfile 在设备上为零,在模拟器上工作正常【英文标题】:iOS/FBSDK - FBSDKProfile is nil on device, works fine on simulator 【发布时间】:2015-10-27 12:12:32 【问题描述】:

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

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

谢谢!

【问题讨论】:

你的模拟器有fcebook账号吗? 【参考方案1】:

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

因此解决方案是使用占位符值,并侦听 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))

希望这可以帮助遇到与我相同问题的任何人。

【讨论】:

以上是关于iOS/FBSDK - FBSDKProfile 在设备上为零,在模拟器上工作正常的主要内容,如果未能解决你的问题,请参考以下文章

iOS FBSDK 上的 Facebook 登录

ios9: FBSDK currentAccessToken nil

适用于 iOS 的 Facebook SDK v4.0 - 未设置 FBSDKProfile currentProfile

iOS FBSDK FBSDKProfileExpressionSharer 在最后一步失败

iOS FBSDK v4 loginbuttondidlogout 无法识别的选择器

使用 iOS FBSDK v4 (multipart/form-data) 上传到 facebook 时编码视频的正确方法