我知道你可以給枚舉的字符串中的rawvalue或詮釋ECT,但有沒有一種方法,使它的類型像AnyClass例如枚舉rawvalue作爲AnyClass
enum Name:AnyClass{
case classOne = ClassOne
case classTwo = ClassTwo
}
凡ClassOne和ClassTwo是類。我得到的錯誤是:
生型「AnyClass」不是從任何文字
可轉換所以有另一種方式來實現這一目標?
我知道你可以給枚舉的字符串中的rawvalue或詮釋ECT,但有沒有一種方法,使它的類型像AnyClass例如枚舉rawvalue作爲AnyClass
enum Name:AnyClass{
case classOne = ClassOne
case classTwo = ClassTwo
}
凡ClassOne和ClassTwo是類。我得到的錯誤是:
生型「AnyClass」不是從任何文字
可轉換所以有另一種方式來實現這一目標?
那麼還有另外一種方法可以實現嗎?
我不知道「this」是什麼,但就Swift語法而言,規則很簡單。此:
enum Name:AnyClass {
是違法的。只允許String和Int作爲原始值類型(並且只允許String和Int文字作爲案例值)。
例如解決方法
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)
}
什麼是你的使用情況?聽起來像是一個XY問題。 – JAL
以及錯誤發生在行枚舉名稱:AnyClass。我只是用它來測試某個類的實例 –
我知道*爲什麼*錯誤發生,但我問你爲什麼要這樣做。爲什麼不只是'對象是ClassOne'還是'type(of:object)== ClassOne.self'? – JAL