【问题标题】:Swift 4 Conditional compile logic not working correctlySwift 4 条件编译逻辑无法正常工作
【发布时间】:2018-01-31 11:50:58
【问题描述】:

这里有一些简单的代码来显示我遇到的问题:

import UIKit

let TEST = true
print(TEST)
#if TEST
    print("1. TEST should be true. Value is : ", TEST)
#endif

#if !TEST
    print("2. TEST should be false.  Value is : ", TEST)
#endif

无论 TEST 是 'true' 还是 'false','#if !TEST' 总是被执行。 '#if TEST' 分支永远不会执行。

这发生在 Playground 和编译代码中。 Xcode 9 测试版 5

【问题讨论】:

标签: compilation syntax-error conditional swift4


【解决方案1】:

您混淆了TEST 局部变量和TEST 编译器标志。

  • 你有一个名为TEST的局部变量
  • 您正在测试的是是否存在名为TEST 的编译器标志

要设置编译器标志,请转到目标的构建设置并搜索Other Swift Flags,然后将-DTEST 添加到您的调试构建中。

此外,与 C 编译器标志相比,Swift 编译器标志要简单得多:标志要么存在,要么不存在。你不能关联一个 int 值或类似的东西。因此,获得它的价值是没有意义的。这是一个真/假的情况:你知道它存在与否;没有其他相关的价值。

【讨论】:

  • CD,感谢您的回复我曾怀疑过类似的事情,但我找不到任何好的描述。如果我想要多个标志,它们会在同一行吗?
猜你喜欢
  • 2020-08-15
  • 2019-06-09
  • 1970-01-01
  • 1970-01-01
  • 2016-07-02
  • 1970-01-01
  • 2014-12-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多