我无法找到解决此问题的正确方法。在我正在创建的应用中,我允许用户随时更改其用户名。所以当他们进入设置页面并更新他们的信息时,我会执行以下操作:
PFUser *modifiedCurrent = [PFUser currentUser];
[modifiedCurrent setObject:username.text forKey:@"username"];
[modifiedCurrent setObject:name.text forKey:@"additional"];
[modifiedCurrent setObject:email.text forKey:@"email"];
[modifiedCurrent saveInBackgroundWithBlock:^(BOOL success, NSError *error) {
if (error) {
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle: @"Error"
message: [NSString stringWithFormat:@"%@",[[error userInfo]
objectForKey:@"error"]]
delegate:self
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
} else {
[self.navigationController popViewControllerAnimated:YES];
};
}];
如果用户选择了已在使用的用户名,服务器显然会返回错误,因此不会更新数据库。但是,[PFUser currentUser]的缓存版本似乎更新了用户名字段,无论是否有错误。我该如何防止这种情况发生?或者我如何恢复到以前的“合法”用户名?
答案 0 :(得分:2)
我会在尝试更改之前查询具有该用户名的用户是否存在。我真的很惊讶错误实际上是在碰撞中注册的。
否则,您可以在用户对象上调用fetch。