我有一个Swift类,它与几个具有不同部署目标的目标相关联,主项目具有iOS 7最低要求,并且有一个iOS 8目标扩展。
现在,当我编译项目时,编译器会在这行代码上抛出警告:
if #available(iOS 8.0, *) { ... }
"不必要的检查' iOSApplicationExtension&#39 ;;最低部署目标确保守卫永远是真实的"
我检查了构建设置选项,发现没有切换来杀死swift警告。
我尝试通过此行单独定义iOSApplicationExtension版本目标,但没有成功:
if #available(iOS 8.0, iOSApplicationExtension 8.0, *) { ... }
有没有办法压制这个烦人的消息?
答案 0 :(得分:1)
找到一个难以理解的解决方法来消除警告,但我希望有更好的方法:
在iOS 8+目标构建设置中,我在Build Settings中定义了一个预编译标志 - > Swift编译器 - 自定义标志 - >其他Swift Flags:
-D iOS8target
然后我改变了代码:
#if iOS8target
// iOS 8+ compatible code
#else
if #available(iOS 8.0, *) {
// repeat iOS 8+ compatible code again!
} else {
// iOS 7 code
}
#endif
它没有重构和丑陋,但它有效!
<强>更新强>
有一个swift编译器开关-suppress-warnings
可以省略所有警告。但它也抑制了有用的警告。
此外,如果只有一个特定文件发出警告,则可以在“构建阶段”窗格中使用-w
标志。它还会禁止有用的警告但仅限于一个文件。
答案 1 :(得分:0)
请将您的部署目标检查到General并从9.0进行设置 至7.0或更低。此警告将自动删除。