警告:常量8与类型为XXXX的表达式比较始终为false。

8

我在我的项目中使用了ASIHTTPRequest,但是在文件ASIDataCompressor.m的第190行:

if ([inputStream streamStatus] == NSStreamEventErrorOccurred) {
        if (err) {
            *err = [NSError errorWithDomain:NetworkRequestErrorDomain code:ASICompressionError userInfo:[NSDictionary dictionaryWithObjectsAndKeys:[NSString stringWithFormat:@"Compression of %@ failed because we were unable to write to the destination data file at %@",sourcePath,destinationPath],NSLocalizedDescriptionKey,[outputStream streamError],NSUnderlyingErrorKey,nil]];
        }
        [compressor closeStream];
        return NO;
    }

我的电脑提示我这个信息:

警告

有人知道如何修复吗?谢谢。

2个回答

17
(NSStreamStatus)NSStreamEventErrorOccurred
编辑
处理这种情况的正确方法可能是用 NSStreamStatusError 替换 NSStreamEventErrorOccurred。 这可能是 ASIHTTP 作者想要的方式。

实际上,这可能是 ASIHTTP API 的问题。另外,如果这是一个新项目,我知道 ASIHTTP 已经被其作者淘汰,因此您可能需要考虑其他替代方案,例如 AFNetwork。不过,ASIHTTP 确实非常全面。 - nielsbot
谢谢,我会尝试使用AFNetwork。https://github.com/AFNetworking/AFNetworking - yellow
1
这怎么可能是被接受的答案!!这只是在编译器发出实际错误信号时将其静音。如果你关心代码是否按设计工作,Joe的答案才是正确的。 - Oscar Hierro
1
你说得对,这是ASIHTTP中的一个bug。我提交了一个pull request来修复它。你可以考虑将NSStreamEventErrorOccurred替换为NSStreamStatusError。(更改ASIDataCompressor.m:164 ASIDataCompressor.m:190 - nielsbot

6
"NSStreamEventErrorOccurred" 是一个类型为 "NSStreamEvent" 的常量,其值为 "8"。"streamStatus" 方法返回的是 "NSStreamStatus" 而不是 "NSStreamEvent",而且 "NSStreamStatus" 的值不会超过 "7",这就是你得到错误的原因。你很幸运,因为 "8" 超出了范围,所以你得到了一个错误,但这并不总是这样,因此,你应该始终谨慎处理返回类型。"

> 和 NSStreamStatus 值不超过 7 < - 啊,这对我来说是个问题。现在非常 Swifty 的 Xcode 正在显示警告,就好像枚举是穷尽的一样。但是 Objective-C API 正在愉快地返回超出声明的公共枚举范围的结果。在我的情况下,它是 NSEventSubtype - pkamb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接