Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.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中打开可表示的枚举类型_Ios_Swift_Enums_Switch Statement_Protocols - Fatal编程技术网

Ios 如何在Swift中打开可表示的枚举类型

Ios 如何在Swift中打开可表示的枚举类型,ios,swift,enums,switch-statement,protocols,Ios,Swift,Enums,Switch Statement,Protocols,我有一个方法,它接受AnyObject类型,并对其执行一些魔术,将其转换为字符串。但是,我无法使用Swift枚举类型: public func magic(关于值:AnyObject){ 变量stringVal:String 开关val{ case let val as Int: stringVal=String(val) 案例让val作为代表: stringVal=val.rawValue 违约: 断言失败(“未处理的类型:\(类型(of:val))) stringVal=val.descri

我有一个方法,它接受AnyObject类型,并对其执行一些魔术,将其转换为字符串。但是,我无法使用Swift枚举类型:

public func magic(关于值:AnyObject){
变量stringVal:String
开关val{
case let val as Int:
stringVal=String(val)
案例让val作为代表:
stringVal=val.rawValue
违约:
断言失败(“未处理的类型:\(类型(of:val)))
stringVal=val.description
}
编译器大声抱怨:

  • 协议“RawRepresentable”只能用作一般约束,因为它具有自身或关联的类型要求
  • 成员“rawValue”不能用于协议类型“RawRepresentable”的值;请改用泛型约束
我无法找出使编译器满意的必要泛型约束语法

我也试过:

        case let val as RawRepresentable where RawValue == String:
            stringVal = val.rawValue

但是编译器抱怨在范围中找不到RawValue,即使它是RawRepresentable的关联类型。

请参阅以了解错误产生的原因。由于您(和编译器)的原因,您无法执行您想要的操作我不知道关联类型的类型;它可能是字符串,也可能是Int,也可能是另一个枚举…@Paulw11谢谢你的链接。我不用开关中的case语句,而是使用泛型语法创建了一个合适的方法。
Swift func magic(关于值:t)其中T.RawValue==String
是否存在可在开关盒内使用的等效语法?