2015-10-10 42 views
2

我有這段代碼不會編譯。這個想法是我想保持一個全球不斷的課堂。在常量類中訪問enum時編譯swift錯誤

ViewController.swift:

var user = [String: String]()  
user[CUser.Attribute.TYPE] = userTypeSwitch.on ? CUser.Type.RIDER.rawValue : CUser.Type.RIDER.rawValue 

CUser.swift

class CUser { 
    enum Type: String { 
    case RIDER 
    case DRIVER 
    } 
    class Attribute { 
    static let TYPE = "TYPE" 
    } 
} 

錯誤消息是這樣的: 「類型 'CUser.Type' 沒有成員 '超人'」

但是當我把枚舉類型Type與編譯好的另一個虛擬類放在一起。這樣的:

user[CUser.Attribute.TYPE] = userTypeSwitch.on ? CUser.Dummy.Type.RIDER.rawValue : CUser.Dummy.Type.RIDER.rawValue 

回答

2

不能使用Type名稱的類裏面,因爲它是一個Metatype Type

元類型類型是指任何類型的類型,包括類類型, 結構類型,枚舉類型和協議類型。

類,結構,或枚舉類型的元類型是該類型接着。鍵入的 名稱。協議類型的元類型(不是在運行時符合協議的 具體類型)是 的名稱,該協議後跟協議.Protocol。例如, 類的SomeClass類SomeClass是SomeClass.Type,並且 協議的元類型SomeProtocol是SomeProtocol.Protocol。

重命名它。

+1

換言之,'Type'是關鍵字? – Arc676

+0

@ Arc676我認爲是的 – Arsen

+0

將它重命名爲TYPE。謝謝你的答案。 –