データベースの特定のフィールドを更新しようとしているサーバー接続を処理するオブジェクトのステータスをチェックする UI のオブザーバー パターンがあります。
UI の update メソッドは、接続で何が起こっているかの情報を含むデータ ペアを含むオブジェクトを受け取ります。問題は、さまざまな可能性をチェックするための多くの if に巻き込まれていることです。
- (void) update:(Bundle *)arg
{
if ([[arg getData:@"updatee"] isEqualToString:@"email"]){
UITableViewCell *emailCell = [[self tableView] cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]];
if ([[arg getData:@"connecting"] isEqualToString:@"true"]) {
//Email is being posted
[_emailLabel_email setText:@"Connecting..."];
[_emailLabel_set setHidden:YES];
emailCell.accessoryType = UITableViewCellAccessoryNone;
[_emailActivityIndicator startAnimating];
}else{
if ([[arg getData:@"succesfull"] isEqualToString: @"false"])
//Email was posted unsuccesfully
[[[UIAlertView alloc] initWithTitle:@"Taken Email Address"
message:@"The email address that you entered is already in use, please double check it"
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil] show];
else{
//Email was posted succesfully.
[_emailLabel_set setText:@"Change"];
}
[_emailActivityIndicator stopAnimating];
[_emailLabel_email setText:[mng getEmail]];
[_emailLabel_set setHidden:NO];
emailCell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
}
}
//Password cases
}
}
サーバーが文字列で応答するため、このコードのスパゲッティを避けるのは難しいと感じています。
update メソッドで送信するよりスマートなオブジェクトはどれですか?