Xcode 如果条件失败,表达式太复杂

Xcode 如果条件失败,表达式太复杂,xcode,if-statement,swift,compilation,Xcode,If Statement,Swift,Compilation,我有一个条件语句,声称“表达式太复杂,无法在合理的时间内解决。”。如果在我的条件语句中有超过5条包含语句,那么它将失败并出现该错误。这看起来不像是应该在编译时发生的事情,因为语句并不那么复杂。这是其他人遇到的错误吗?除了分开我的条件,还有别的解决办法吗 else if( contains(JSONDict.keys.array, "id") && contains(JSONDict.keys.array, "part

我有一个条件语句,声称“表达式太复杂,无法在合理的时间内解决。”。如果在我的条件语句中有超过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")
                ){

            }

是的,这是一个已知的问题-另请参见

解决方案是使用多行语句将逻辑表达式存储到变量中:

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 {
    }
}
对于如此强大的语言来说有点奇怪。。。但这是一种(希望是暂时的)权衡