我有一个验证方法,通过它我可以分析特定变量是否通过了验证标准。
以下是代码:
-(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个实例,这很奇怪,因为最终,它会在方法结束时返回。
我在设置变量的前三个实例中得到它,只有这三个:
if (_editRequired==YES) {
if (//checks if the field contains any characters) {
valid = FALSE;
} else {
valid = TRUE;
}
} else {
valid = TRUE;
}
有人可以帮忙吗?
答案 0 :(得分:3)
您的if (_editRequired==YES) {}
条件被if (_editRegEx) {}
条件完全覆盖,因此前者中没有使用任何分配:valid
始终在第二个条件中重新分配。
答案 1 :(得分:0)
你有这个警告,因为你在if / else之后存储了另一个值。 事实上,在此之后你有另一个if(测试_editRegEx)并在所有情况下存储一个值(if和else)。所以不需要你的第一个。