枚举rawvalue作为AnyClass

时间:2016-12-24 21:03:26

标签: ios swift class enums

我知道你可以给enum提供String或Int ect的rawvalue,但有没有办法让它的类型像AnyClass一样

enum Name:AnyClass{
    case classOne = ClassOne
    case classTwo = ClassTwo
}

ClassOne和ClassTwo是类。我得到的错误是:

  

原始类型'AnyClass'不能从任何文字

转换

那么有另一种方法可以达到这个目的吗?

2 个答案:

答案 0 :(得分:2)

  

那么有另一种方法来实现这一目标吗?

我不知道"这个"是的,但就Swift语法而言,规则很简单。这样:

enum Name:AnyClass {

是非法的。只允许String和Int作为原始值类型(并且只允许String和Int文字作为大小写值)。

答案 1 :(得分:0)

例如解决方法

typealias MyTypeData = (title: String, iconName: String)
enum MyType: String {
    case Test1
    case Test2

    private var data: MyTypeData {
        switch self {
        case .Test1: return (title: "One", iconName: "icn1")
        case .Test2: return (title: "Two", iconName: "icn2")
        }
    }

    var title: String { get { return data.title } }
    var icon: UIImage? { get { return UIImage(named: data.iconName) } }

}

或者你可以试试

enum MyType: String {
     case Test1(data:OneClass)
     case Test2(data:TwoClass)
}