在iOS7中不保存PFUser currentUser

时间:2015-05-10 08:00:14

标签: ios iphone parse-platform pfuser

我使用以下代码使用自定义字段保存当前登录的用户。我允许用户填写信息然后保存。我使用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。救命啊!

2 个答案:

答案 0 :(得分:0)

你也应该检查你的第一个参数(isSuccess):

if (bool == YES && error != nil) -> success
else -> failure

答案 1 :(得分:0)

我花了很长时间才意识到,即使我从未真正找到问题本身的解决方案,我找到了一个解决方法。我在currentInstallation中保存了currentUser,在currentUser中保存了currentInstallation。保存时会导致问题。我还通过直接发送一个通道数组而不是使用addUniqueObject来保存currentInstallation上的通道。

    let installation = PFInstallation.currentInstallation()
    installation.channels = channels;
    installation.saveInBackground()