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 に答える