1

我找不到这个问题的正确解决方案。在我正在创建的应用程序中,我允许用户随时更改他们的用户名。因此,当他们转到设置页面并更新他们的信息时,我会执行以下操作:

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

4

1 回答 1

2

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

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

于 2013-08-09T10:19:23.553 回答