0

特定の変数が検証基準に合格するかどうかを分析する検証方法があります。

コードは次のとおりです。

-(BOOL)validateFields{
    BOOL valid = FALSE;
    if (dateEntry != TRUE && saveOrderType != TRUE) {
        if (_editRequired==YES) {
            if ([[[editedTextField text] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]] isEqualToString:@""]) {
                valid = FALSE;
            } else {
                valid = TRUE;
            }
        } else {
            valid = TRUE;
        }
        if (_editRegEx) {
            NSRegularExpression *regex = [NSRegularExpression
                                      regularExpressionWithPattern:_editRegEx
                                      options:NSRegularExpressionCaseInsensitive
                                      error:nil];
            if ([regex numberOfMatchesInString:[editedTextField text] options:0 range:NSMakeRange(0, [[editedTextField text] length])]==0) {
                valid=FALSE;
            } else {
                valid = TRUE;
            }
        } else {
            valid = TRUE;
        }

    } else {
        valid = TRUE;
    }
    return valid;
}

Value stored to 'valid' is never read最終的にメソッドの最後に返されるため、奇妙な3つのインスタンスを取得しています。

変数を設定する最初の3つのインスタンスで、次の3つだけで取得しています。

if (_editRequired==YES) {
    if (//checks if the field contains any characters) {
        valid = FALSE;
    } else {
        valid = TRUE;
    }
} else {
     valid = TRUE;
}

誰かがここで助けることができますか?

4

2 に答える 2

3

if (_editRequired==YES) {}条件は条件によって完全に上書きされるif (_editRegEx) {}ため、前者内の割り当ては使用されませvalidん。2番目の条件では常に再割り当てされます。

于 2013-01-17T10:44:34.357 に答える
0

この if/else の後に別の値を格納するため、この警告が表示されます。実際、その直後に別の if (_editRegEx をテストするため) があり、すべての場合 (if と else) に値を格納します。したがって、最初の if は必要ありません。

于 2013-01-17T10:39:10.810 に答える