Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/101.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 预编译器条件编译两种情况_Ios_Swift - Fatal编程技术网

Ios 预编译器条件编译两种情况

Ios 预编译器条件编译两种情况,ios,swift,Ios,Swift,我的应用程序中有类似的内容: #if PRODUCTION let code: String? = "1111" #elseif DEMO let code: String? = "2222" #elseif TEST let code: String? = "3333" #else let code: String? = "0000" #endif 问题是,在部署目标上,它有标志DEMO和TEST,我得到的定义与第4行和第6行的先前值冲突。这怎么可能?#elseif不应该是独占的吗 更新 尽

我的应用程序中有类似的内容:

#if PRODUCTION
let code: String? = "1111"
#elseif DEMO
let code: String? = "2222"
#elseif TEST
let code: String? = "3333"
#else
let code: String? = "0000"
#endif
问题是,在部署目标上,它有标志
DEMO
TEST
,我得到的
定义与第4行和第6行的先前值
冲突。这怎么可能?
#elseif
不应该是独占的吗

更新

尽管这很奇怪,但它仍然有效:

let code: String?

#if PRODUCTION
code = "1111"
#elseif DEMO
code = "2222"
#elseif TEST
code = "3333"
#else
code = "0000"
#endif
我还有一个目标,其中只定义了
TEST
PRODUCTION
,并且它与前面的代码一起工作,因此我假设只解析可能编译的案例

生成配置语句

生成配置语句主体中的每个语句都是 即使它没有被遵守,也会被解析


我不知道为什么苹果会解析Build-Configuration语句中的每一条语句,但它们会解析,我认为这就是问题的原因。

在这种情况下,两条#elseif(DEMO和TEST)都是有效的,但必须只有一条。@azimov注意到与#elseif;相对应的其他语句)我认为这不是完全的事实,请看我的更新,但已经足够接近了