ste*_*ris 16 xcode if-statement compilation swift
我有条件声明声称'表达太复杂,无法在合理的时间内解决.如果我的条件中包含大约5个包含语句,则它将失败并显示该错误.这似乎不应该在编译时发生,因为声明并不是那么复杂.这是其他人遇到过的错误吗?除了分裂我的条件之外,还有其他解决方案吗?
else if(
contains(JSONDict.keys.array, "id") &&
contains(JSONDict.keys.array, "part_number") &&
contains(JSONDict.keys.array, "sales_part_number") &&
contains(JSONDict.keys.array, "include_in_search") &&
contains(JSONDict.keys.array, "description") &&
contains(JSONDict.keys.array, "brand") &&
contains(JSONDict.keys.array, "product_group") &&
contains(JSONDict.keys.array, "product_design") &&
contains(JSONDict.keys.array, "material") &&
contains(JSONDict.keys.array, "line") &&
contains(JSONDict.keys.array, "unit_of_mass") &&
contains(JSONDict.keys.array, "coating") &&
contains(JSONDict.keys.array, "pcs_converstion") &&
contains(JSONDict.keys.array, "appRim") &&
contains(JSONDict.keys.array, "appSegment") &&
contains(JSONDict.keys.array, "series") &&
contains(JSONDict.keys.array, "product_application")
){
}
Run Code Online (Sandbox Code Playgroud)
Ant*_*nio 21
是的,这是一个已知问题 - 请参阅此答案.
解决方案是使用多行语句将逻辑表达式存储到变量中:
else {
var logicalExpression = contains(JSONDict.keys.array, "id") &&
contains(JSONDict.keys.array, "part_number") &&
contains(JSONDict.keys.array, "sales_part_number") &&
contains(JSONDict.keys.array, "include_in_search")
logicalExpression = logicalExpression && contains(JSONDict.keys.array, "description") &&
contains(JSONDict.keys.array, "brand") &&
contains(JSONDict.keys.array, "product_group") &&
contains(JSONDict.keys.array, "product_design")
// ... etc.
if logicalExpression {
}
}
Run Code Online (Sandbox Code Playgroud)
对于如此强大的语言来说有点奇怪...但这是一个(希望是暂时的)权衡.