1

以下のコードを使用して、現在ログインしているユーザーをカスタム フィールドに保存しています。ユーザーが情報を入力して保存できるようにします。GCM を使用して独自のスレッドで両方の保存方法を使用し、saveInBackgrounWithBlock を使用しました。iOS8 では問題なく動作しますが、iOS7 では保存は行われず、完了ブロックは呼び出されません。何か案は?ありがとう

       if PFUser.currentUser() != nil {
            PFUser.currentUser().setObject(installation, forKey: "installation")
            PFUser.currentUser().saveInBackgroundWithBlock({ (bool: Bool, error: NSError?) -> Void in
                if(error != nil) {
                    let alert = UIAlertView(title: "Problem Saving", message: "Make sure you are connecte to the internet and try again", delegate: nil, cancelButtonTitle: "OK")
                    alert.show();
                }
            })
        }

更新 1:アプリを削除すると問題が一時的に解決することに気付きました。ただし、サインアウトして別のユーザーでサインインすると (つまり、現在のユーザーを変更すると)、問題が再び発生します。

更新 2:この問題は、どういうわけか PFInstallation から発生しているようです。addUniqueObject を使用すると問題が発生します。このメソッドを呼び出した後、すべての保存は iOS7 の動作を停止します。PFUser でも。PFUser にはインストール設定があり、その逆もあります。それらの配列。

更新 3: addUniqueObject だけではなく、PFInstallation.currentInstallation の setObject のようです。ヘルプ!

4

2 に答える 2

0

気付くのに長い時間がかかりました。実際に問題自体の解決策を見つけることはできませんでしたが、回避策を見つけました。currentUser を currentInstallation に保存し、currentInstallation を currentUser に保存していました。これにより、保存時に問題が発生していました。また、addUniqueObject を使用する代わりに、チャネルの配列を直接送信して、currentInstallation にチャネルを保存しました。

    let installation = PFInstallation.currentInstallation()
    installation.channels = channels;
    installation.saveInBackground()
于 2015-05-30T08:41:58.713 に答える