我通过JSON提取我的案例陈述的允许系统代码列表。它们以字符串形式显示,如下所示:
let validCodesFromJson:String = "001, 002, 003, 004, 005, 007, 008, 090, 091, 092, 096"
然后我将这个字符串转换为一个带有以下内容的数组:
let validCodes:NSArray = validCodesFromJson.componentsSeparatedByString(", ")
我需要将这个代码数组放到我的switch语句的第一个例子中。
switch responseArray[selectedResponseTableRow]["code"]! {
case validCodes:
successfulPostAnimation()
case "006":
showAlertWindow("Alert", message: "Code was 006", buttonText: "OK")
default:
showAlertWindow("Alert", message: "Code was not in the list", buttonText: "OK")
}
如果代码在其他情况下使用默认值为“006”,则switch语句有效。如果我在第一种情况下定义所有代码而不是使用数组,它工作正常。但我需要以编程方式为此项目执行此操作。
答案 0 :(得分:6)
您可以使用guard-clause
来增加每个特定case
的表达式的复杂性。例如:
var validCodes = ["001", "002", "003"]
var code = "002"
switch code {
case let value where (contains(validCodes, value)):
"Valid code"
case "006":
"Bad code"
default:
"Default"
}
如果您在游乐场中进行此操作,则会看到"Valid code"
。
如果您对查看这些模式的语法/语法感兴趣,可以The Swift Programming Language: Statements