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;
}

我得到了 3 个Value stored to 'valid' is never read奇怪的实例,因为最终它会在方法结束时返回。

我在设置变量的前三个实例中得到它,仅在这三个实例上:

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总是在第二个条件中重新分配。

于 2013-01-17T10:44:34.357 回答
0

您收到此警告是因为您在 if/else 之后存储了其他值。实际上,就在这之后,您还有另一个 if(用于测试 _editRegEx)并在所有情况下(if 和 else)都存储一个值。所以你的第一个 if 是不需要的。

于 2013-01-17T10:39:10.810 回答