如何以编程方式填充 switch case 值?

Posted

技术标签:

【中文标题】如何以编程方式填充 switch case 值?【英文标题】:How do I programmatically populate switch case values? 【发布时间】:2014-10-22 14:29:51 【问题描述】:

我正在通过 JSON 为我的 case 语句提取允许的系统代码列表。它们作为字符串引入,如下所示:

let validCodesFromJson:String = "001, 002, 003, 004, 005, 007, 008, 090, 091, 092, 096"

然后我将此字符串转换为具有以下内容的数组:

let validCodes:NSArray = validCodesFromJson.componentsSeparatedByString(", ")

我需要将这组代码放入我的 switch 语句的第一个 case。

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 语句在其他情况下使用默认值。如果我在第一种情况下定义所有代码而不是使用数组,它工作正常。但我需要为这个项目以编程方式执行此操作。

【问题讨论】:

注意componentsSeparatedByString中的字符串应该是,<blank> 而不是<blank>, 已在示例中注明并修复。谢谢! 【参考方案1】:

您可以使用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

【讨论】:

我认为你不需要休息.. ? 你是对的@Rob,已删除中断。 (developer.apple.com/library/ios/documentation/Swift/Conceptual/…) 使用 Swift 3 我会这样写 case-condition:case let value where validCodes.contains(value):

以上是关于如何以编程方式填充 switch case 值?的主要内容,如果未能解决你的问题,请参考以下文章

c语言中应用switch语句编程:输入1-7之间的任意数字,程序按照用户的输入输出相应的星期值!!

如何以编程方式填充核心数据存储,为每条记录生成索引

如何在 Django 模板中获得“switch-case”语句功能?

switch多分支语句简析

在Switch语句中使用.StartsWith?

if else和switch case那个效率更高一点