处理PFUser currentUser缓存上的重复用户名错误

时间:2013-08-09 06:13:46

标签: ios objective-c caching login parse-platform

我无法找到解决此问题的正确方法。在我正在创建的应用中,我允许用户随时更改其用户名。所以当他们进入设置页面并更新他们的信息时,我会执行以下操作:

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]的缓存版本似乎更新了用户名字段,无论是否有错误。我该如何防止这种情况发生?或者我如何恢复到以前的“合法”用户名?

1 个答案:

答案 0 :(得分:2)

我会在尝试更改之前查询具有该用户名的用户是否存在。我真的很惊讶错误实际上是在碰撞中注册的。

否则,您可以在用户对象上调用fetch。