Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

iOS7 comparison of constant with expression is always false

In my app that works on iOS 5 and 6 I have an if statement:

NSInputStream *inputStream = [NSInputStream inputStreamWithFileAtPath:sourcePath];
if ([inputStream streamStatus] == NSStreamEventErrorOccurred){
[...]
}

On iOS 7 I get the following warning:

 Comparison of constant 'NSStreamEventErrorOccurred' with expression of type 
'NSStreamStatus' (aka 'enum NSStreamStatus') is always false

Any ideas on what's changed on iOS 7 regarding NSInputstream class? I would like to know why do I receive this warning now on iOS7.

like image 816
Teo Avatar asked Aug 05 '13 11:08

Teo


1 Answers

iOS 7 is more particular with enum comparisons. The issue is that you're comparing an NSStreamStatus enumerated value to another, unrelated NSInputStreamEvent value. Instead, try:

NSInputStream *inputStream = [NSInputStream inputStreamWithFileAtPath:sourcePath];
if ([inputStream streamStatus] == NSStreamStatusError){
    [...]
}

This issue has nothing to do with iOS 7 per se, it's just an existing issue you've now discovered thanks to more meticulous warnings.

like image 93
Stavash Avatar answered Sep 28 '22 14:09

Stavash