' is garbage va...">

The left operand '>' is the value for garbage

When I build and change my application, I get a warning below.

"Left operand '>' is garbage value" on this line isTrue = (newLength> 20)? NO YES;

What is the problem here. Thanks for any help

 (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    NSUInteger newLength;
    BOOL isTrue;
    if(textField == txtFirstName){
        newLength = [textField.text length] + [string length] - range.length;
        //isTrue = (newLength > 20) ? NO : YES;
    }
    if(textField == txtLastName){
        newLength = [textField.text length] + [string length] - range.length;
        //isTrue = (newLength > 20) ? NO : YES;
    }
    if(textField == txtEmail){
        newLength = [textField.text length] + [string length] - range.length;
        //isTrue =  (newLength > 100) ? NO : YES;
    }
    if(textField == txtCompanyName){
        newLength = [textField.text length] + [string length] - range.length;
        //isTrue =  (newLength > 30) ? NO : YES;
    }
    if(textField == txtPassword){
        newLength = [textField.text length] + [string length] - range.length;
        //isTrue =  (newLength > 30) ? NO : YES;
    }
    if(textField == txtRe_EnterPassword){
        newLength = [textField.text length] + [string length] - range.length;
        //isTrue =  (newLength > 30) ? NO : YES;
    }
    if(textField == txtZipCode){
        newLength = [textField.text length] + [string length] - range.length;
        //isTrue =  (newLength > 20) ? NO : YES;
    }
    if(textField == txtCountry){
        newLength = [textField.text length] + [string length] - range.length;
        //isTrue =  (newLength > 30) ? NO : YES;
    }
    isTrue = (newLength > 20) ? NO : YES;

    return isTrue;
}
+5
source share
5 answers

The problem occurs when all if conditions fail, i.e. if textFieldnot included in the kit that you expect from it.

In this case, it is newLengthnever assigned and will be a random garbage value. Although this is likely to "never happen," the static analyzer does not know this.

newLength, , , .

+15

, " " "". newLength , , . .

+1

. , .

(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    NSUInteger newLength = 0;
    BOOL isTrue = false;

    if(textField == txtFirstName){
        newLength = [textField.text length] + [string length] - range.length;
        isTrue = (newLength > 20) ? NO : YES;
    }
    else if(textField == txtLastName){
        newLength = [textField.text length] + [string length] - range.length;
        isTrue = (newLength > 20) ? NO : YES;
    }
    else if(textField == txtEmail){
        newLength = [textField.text length] + [string length] - range.length;
        isTrue =  (newLength > 100) ? NO : YES;
    }
    else if(textField == txtCompanyName){
        newLength = [textField.text length] + [string length] - range.length;
        isTrue =  (newLength > 30) ? NO : YES;
    }
    else if(textField == txtPassword){
        newLength = [textField.text length] + [string length] - range.length;
        isTrue =  (newLength > 30) ? NO : YES;
    }
    else if(textField == txtRe_EnterPassword){
        newLength = [textField.text length] + [string length] - range.length;
        isTrue =  (newLength > 30) ? NO : YES;
    }
    else if(textField == txtZipCode){
        newLength = [textField.text length] + [string length] - range.length;
        isTrue =  (newLength > 20) ? NO : YES;
    }
    else if(textField == txtCountry){
        newLength = [textField.text length] + [string length] - range.length;
        isTrue =  (newLength > 30) ? NO : YES;
    }
    else {
        isTrue = (newLength > 20) ? NO : YES;
    }

    return isTrue;
}
+1

, ( ) if . . , .

else ifs , NSAssert.

0
source

Try [a compare: b] returns -1 if a <b, 0 if a == b and 1 if a> b.

isTrue = ([newLength compare: 20] == 1)? NO YES;

0
source

All Articles