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

标签 ios objective-c facebook swift fbsdk

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

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

谢谢!

最佳答案

这个问题的原因是 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 在设备上为零,在模拟器上工作正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33367710/

相关文章:

iphone - AudioServicesAddSystemSoundCompletion 回调方法在几次调用后没有被调用

facebook - 是否有 Facebook API 来检索最近的音乐事件,尤其是 Spotify 上的音乐?

android - 未生成 R.java 文件

facebook - Facebook 应用中心列出的网站平台

ios - XCode AddressSanitizer 结果解读

objective-c - 如何防止访问可相互访问的变量?

ios - iOS 共享实例在哪里释放

iphone - 如何在 iPhone SDK 中包含和使用新字体?

ios - 从 Objective C 中的 UIView 中删除绘图矩形

ios - 管理音频实例以允许交叉淡入淡出等的最佳策略