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