この問題の適切な解決策が見つかりません。私が作成しているアプリでは、ユーザーがいつでもユーザー名を変更できるようにしています。そのため、ユーザーが設定ページに移動して情報を更新するときに、次のことを行います。
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] のキャッシュされたバージョンは、エラーがあったかどうかに関係なく、ユーザー名フィールドを更新するようです。これを防ぐにはどうすればよいですか?または、以前の「正当な」ユーザー名に戻すにはどうすればよいですか?