1

アプリケーションの検証メソッドを作成していますが、戻り値に問題があります。

互換性のないブロック ポインタ タイプが char を送信しています ...

-(BOOL)validateEmail{

    if (self.ownUser.emailUser != self.emailField) {
        [UserAPIClient validateEmail:self.emailField sucess:^(BOOL sucess, NSError *error) {
            if (sucess) {
                return YES;
            }else{
                NSLog(@"Can´t change e mail, already one is created in the database");
                return NO;
            }
        }];

    }else{
         return YES;
    }
}

誰でもこれを解決するのを手伝ってもらえますか?

前もって感謝します...

編集

UserApiClientを採用して BOOL を返すだけで、適切なソリューションを完全に逃しました

-(BOOL)validateEmail{

if (self.ownUser.emailUser != self.emailField) {

    return [UserAPIClient validateEmail:self.emailField];
}else{
    return YES;
}

}

EDIT 2 後でいくつかの変更を加えるには、このメソッドの結果が必要であることを知っています。このメソッドを同期のメソッドに変更するにはどうすればよいですか?

    [[MYApiClient sharedInstance] getPath:@"validateEmail" parameters:params
                                    success:^(AFHTTPRequestOperation *operation, id JSON) {

                                        NSLog(@"SUCESS %@", JSON);
                                    }
                                    failure:^(AFHTTPRequestOperation *operation, NSError *error) {

                                        NSLog(@"Error  %@", error);

                                    }];
4

2 に答える 2

2

ブロックの外側の値を使用する場合は、変数sucessにコピーする必要があります。__block

-(BOOL)validateEmail {

    if (self.ownUser.emailUser != self.emailField) {
        __block BOOL returnValue;

        [User validateEmail:self.emailField sucess:^(BOOL sucess, NSError *error) {
            if (sucess) {
                returnValue = YES;
            }else{
                NSLog(@"Can´t change e mail, already one is created in the database");
                returnValue = NO;
            }
        }];

        return returnValue;

    } else {
         return YES;
    }
}

ブロック自体は (プロトタイプから推測すると) 値を返しません。

これは、 が同期[User validateEmail:sucess:]的に機能する場合にのみ機能することに注意してください。したがって、関数呼び出しが戻るときに定義されます。returnValue

于 2012-10-25T10:51:18.903 に答える
1

メソッドの宣言は表示されませんが[User validateEmail:sucess:](sic)、ブロックが 以外のものを返すように宣言されているようですBOOL

于 2012-10-25T10:44:32.803 に答える