2016-12-24 51 views
-2

我知道你可以給枚舉的字符串中的rawvalue或詮釋ECT,但有沒有一種方法,使它的類型像AnyClass例如枚舉rawvalue作爲AnyClass

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

凡ClassOne和ClassTwo是類。我得到的錯誤是:

生型「AnyClass」不是從任何文字

可轉換所以有另一種方式來實現這一目標?

+3

什麼是你的使用情況?聽起來像是一個XY問題。 – JAL

+0

以及錯誤發生在行枚舉名稱:AnyClass。我只是用它來測試某個類的實例 –

+1

我知道*爲什麼*錯誤發生,但我問你爲什麼要這樣做。爲什麼不只是'對象是ClassOne'還是'type(of:object)== ClassOne.self'? – JAL

回答

2

那麼還有另外一種方法可以實現嗎?

我不知道「this」是什麼,但就Swift語法而言,規則很簡單。此:

enum Name:AnyClass { 

是違法的。只允許String和Int作爲原始值類型(並且只允許String和Int文字作爲案例值)。

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) 
}