0

ユーザー名の信頼性に関するサーバーの応答をテストしています。サーバーが「ユーザー不在」で応答した場合、UIAlertView がポップアップします。

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
    NSString *responseString1 = [[NSString alloc] initWithData:responseData1 encoding:NSUTF8StringEncoding];

    NSLog(@"%@",responseString1);

    NSString *response = responseString1;
    NSLog(@"%@",response);

    if ([response isEqualToString:@"User absent"]) {
        _userAbsent = [[UIAlertView alloc]initWithTitle:@"Error" message:@"1. Display Name missing.\n2. Password missing." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
        self.userAbsent.delegate = self;

        [_userAbsent show];
    }

エラーを装うためにランダムなユーザー名とパスワードを入力しましたが、アラート ビューがポップアップしませんでした。サーバーからのデータに対して NSLog を 2 回実行しました。

これはログ出力です:

2013-03-28 20:59:35.542 SimpleTable[1429:f803] "User absent"
2013-03-28 20:59:35.542 SimpleTable[1429:f803] "User absent"

ユーザー名とパスワードの両方のフィールドが欠落している場合に警告する、サーバーからのデータを要求する前に、別の UIAlertView があります。ただし、その AlertView は機能しました。

  1. この問題に関する指針はありますか?
  2. AlertView が目を痛める可能性があることは理解しています。AlertViewを使用せずにユーザーに警告する方法はありますか?

事前より...

4

3 に答える 3

2

ユーザーが不在ではなく、「ユーザーが不在」という応答が返されます (つまり、引用符付きの文字列)。

initordeallocメソッド以外では、バッキング変数 (_userAbsent) をそのまま使用しないでください。

このようにしてみてください...

NSString *strResponse = @"\"User absent\"";
if ([response isEqualToString:strResponse]) {

    self.userAbsent = [[UIAlertView alloc]initWithTitle:@"Error" message:@"1. Display Name missing.\n2. Password missing." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];

    [self.userAbsent show];
}

これがあなたに役立つことを願っています...

于 2013-03-28T13:17:48.290 に答える
0

UIAlertView正しく設定されていないようです。

nil1 つだけ必要な場合は、最後に2 つの宣言があります。

[[UIAlertView alloc] initWithTitle:@"Error" message:@"1. Display Name missing.\n2. Password missing." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];

奇妙なエラーに思えるかもしれませんが、それが原因でしょうか?

于 2013-03-28T13:23:32.913 に答える