Ios 如何以编程方式填充开关大小写值?
我正在通过JSON为我的case语句引入一个允许的系统代码列表。它们作为字符串引入,如下所示:Ios 如何以编程方式填充开关大小写值?,ios,swift,nsarray,switch-statement,programmatically-created,Ios,Swift,Nsarray,Switch Statement,Programmatically Created,我正在通过JSON为我的case语句引入一个允许的系统代码列表。它们作为字符串引入,如下所示: let validCodesFromJson:String = "001, 002, 003, 004, 005, 007, 008, 090, 091, 092, 096" 然后,我将此字符串转换为具有以下内容的数组: let validCodes:NSArray = validCodesFromJson.componentsSeparatedByString(", ") 我需要将这个代码数组放
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语句在使用默认值的每一种情况下都有效。如果我在第一种情况下定义所有代码,而不是使用数组,那么效果很好。但是我需要为这个项目编程 您可以使用
guard子句
来增加每个特定情况下表达式的复杂性。例如:
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"
}
如果你在操场上运行,你会看到“有效代码”
如果您对这些类型的模式的语法/语法感兴趣,可以使用保护子句来增加每个特定大小写的表达式的复杂性。例如:
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"
}
如果你在操场上运行,你会看到“有效代码”
如果您有兴趣了解这类模式的语法/语法,您可以注意,组件中由字符串
分隔的字符串应该是,
,而不是,
,在示例中注释并固定。谢谢请注意,组件中由字符串
分隔的字符串应该是,
,而不是,
在示例中被注释和固定。谢谢我认为你不需要休息?你说得对,罗伯,你被移除了。()使用Swift 3,我会这样写case条件:case let value where validCodes.contains(value):
我认为您不需要中断?你说得对,罗伯,你被移除了。()使用Swift 3,我会这样写case条件:case let value,其中validCodes.contains(value):