Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.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
Ios Swift 5-枚举内的枚举_Ios_Swift_Data Structures_Enums - Fatal编程技术网

Ios Swift 5-枚举内的枚举

Ios Swift 5-枚举内的枚举,ios,swift,data-structures,enums,Ios,Swift,Data Structures,Enums,我正在尝试使用enum对项目进行分类。因此,我最终在枚举中包含了枚举。我不完全确定整个枚举是如何工作的 但我想做的是点击enum MaterialClassification,然后如果有第二个enum,比如case clay,点击该enum的值以字符串形式返回 enum MaterialClassification { case clay(value: Clay) case flux//(value: Fluxs) case glassFormer ca

我正在尝试使用enum对项目进行分类。因此,我最终在枚举中包含了枚举。我不完全确定整个枚举是如何工作的

但我想做的是点击enum MaterialClassification,然后如果有第二个enum,比如case clay,点击该enum的值以字符串形式返回

enum MaterialClassification {
    
    case clay(value: Clay)
    case flux//(value: Fluxs)
    case glassFormer
    case stain//(value: Clay)
    case accessoryMaterial
    
    case all//(value: Clay)
}

extension MaterialClassification {
    var materiaIdentifier: String {
        switch self {
        case .clay:
            return "clay"
        case .flux:
            return "flux"
        case .glassFormer:
            return "glassFormer"
        case .stain:
            return "stain"
        case .accessoryMaterial:
            return "accessoryMaterial"
        case .all:
            return "all"
        }
    }
}
我的目标是能够在需要时返回嵌套字符串。例如:

materialClassification: MaterialClassification.clay(type: Clay.isPrimaryKaolin)

我需要一种返回“原生高岭土”的方法。但是我不知道如何连接这两个枚举。

如果我正确理解您的问题,您希望访问关联类型的属性。您可以向
MaterialClassification
enum添加新属性,并使用它访问案例

像这样的东西应该有用

var type: String? {
    
    switch self {
    case .clay(let clay):
        return clay.clayType
    case .flux(let flux):
        return flux.fluxType
    case .stain(let stain):
        return stain.stainType
    case .glassFormer, .accessoryMaterial, .all:
        return nil
    }
}

你的意思是
如果case.clay(let clay)=材料分类{print(clay.clayType)}否则{print(“not clay”)}
?@Sweeper正是这样!谢谢!:)这正是我要找的!非常感谢。
var type: String? {
    
    switch self {
    case .clay(let clay):
        return clay.clayType
    case .flux(let flux):
        return flux.fluxType
    case .stain(let stain):
        return stain.stainType
    case .glassFormer, .accessoryMaterial, .all:
        return nil
    }
}