Ios 如何在Swift中打开可表示的枚举类型
我有一个方法,它接受AnyObject类型,并对其执行一些魔术,将其转换为字符串。但是,我无法使用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
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
是否存在可在开关盒内使用的等效语法?