Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Enums swift 4.2-如何与guard检查变量是否具有有效的枚举值_Enums_Swift4.2 - Fatal编程技术网

Enums swift 4.2-如何与guard检查变量是否具有有效的枚举值

Enums swift 4.2-如何与guard检查变量是否具有有效的枚举值,enums,swift4.2,Enums,Swift4.2,我需要检查func传递的变量f.e.是否是有效的枚举值。本身并没有通过,只是作为一个例子 enum CollectionDict : String { // Mapping to String Model = "Model" or should I ... case Model case Type case Element case .... } .... guard InColectionDict != CollectionDict else { retu

我需要检查func传递的变量f.e.是否是有效的枚举值。本身并没有通过,只是作为一个例子

enum CollectionDict : String {  // Mapping to String Model = "Model" or should I ...
    case Model
    case Type
    case Element
    case ....
}

....
guard  InColectionDict != CollectionDict else { return false }
....
很明显,我的样品线是错误的。我应该使用什么或做什么来获得正确的保护,或者至少在一行中比较/验证incollectiondict变量与enum CollectionDict

我确实希望能逃脱惩罚

func makeItem ( _ item: String , with key : String , inCollection : CollectionDict ) -> Bool {
    guard let res = CollectionDict.inCollection else { return false }
但这给了我一个错误。
当然提前谢谢你。

斯威夫特是强类型的。如果您的函数有一个非可选的枚举参数,那么在运行时它保证是一个有效的枚举值。

谢谢,但让我们假设它是可选的。我想我可以在上面的问题中添加代码部分。但是我得到一个错误CollectionDict has noMember of inCollectionIf是可选的,您只需要确保它不是null:guard let myEnum=myEnum else{return}。然后保证它是有效的枚举值。好的,我明白了。现在清除,但是如果我有一个变量可以有不同类型的枚举及其值呢?如enum1.xxx或enum2.yyy。我只是想知道如何检查变量是否属于某个枚举。我希望你明白我的意思,我想知道如何比较。我的示例不够全面。如果要检查枚举是否为特定值(例如,如果它是模型),请使用guard let myEnum==CollectionDict.Model else{return}我知道,但此时枚举值位于变量中。如果我这样做,我有12乘以2的枚举值,我得到了一个很长的开关。那个么,若模型在一个变量中,比如InCollectionDict=“Model”或InCollectionDict=CollectionDict.Model,那个该怎么办呢