iOS7 常量与表达式的比较始终为假

标签 ios objective-c comparison nsinputstream

在我的适用于 iOS 5 和 6 的应用程序中,我有一个 if 语句:

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

在 iOS 7 上我收到以下警告:

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

关于 NSInputstream 类在 iOS 7 上有什么变化?我想知道为什么我现在在 iOS7 上会收到此警告。

最佳答案

iOS 7 更加注重枚举比较。问题是您正在将 NSStreamStatus 枚举值与另一个不相关的 NSInputStreamEvent 值进行比较。相反,请尝试:

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

此问题与 iOS 7 本身无关,这只是您现在发现的一个现有问题,这要归功于更细致的警告。

关于iOS7 常量与表达式的比较始终为假,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18056596/

相关文章:

ios - 如何在现有图像上添加水印

iphone - Objective C IB 奥特莱斯

c++ - 我无法获得正确分离和比较数组数据的代码

c# - 比较 C# 中的两个字典

string - 声明char以防 rust

iphone - 搜索栏的 iOS 色调文本字段背景

ios - Xcode Playground 不执行功能

ios - MongoDB 与 Firebase

objective-c - 过渡到 ARC 的工具

objective-c - 使用 NSBundle 加载我的资源