Swift-开启元类型

时间:2019-04-30 13:34:35

标签: swift

选项1:

func getKeyByType<T:Decodable>(type: T.Type) -> String {

    if (type == [String].self){
        return "storageKey"
    }

    return "nothing"
}

选项2:

func getKeyByType<T:Decodable>(type: T.Type) -> String {

    switch type {
    case [String].self:
        return "storageKey"
    default:
        return "nothing"
    }
}

//

getKeyByType(type: [String].self)

第一种方法可以正常工作,但第二种方法会出现编译错误:

  

“ [String] .Type”类型的表达模式不能与类型的值匹配   'T.Type'

如何使开关适用于元类型?

1 个答案:

答案 0 :(得分:3)

解决方案:

switch type {
case is [String].Type :
    return "storageKey"
default:
    return "nothing"
}