Enums swift 4.2-如何与guard检查变量是否具有有效的枚举值
我需要检查func传递的变量f.e.是否是有效的枚举值。本身并没有通过,只是作为一个例子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
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,那个该怎么办呢