我已經創建了一個響應枚舉爲我的網絡返回值和一個函數,它應該返回AnyObject
,因爲它必須是一個鍵的值。枚舉關聯值的問題
enum Response {
case Success(value:AnyObject)
case Failure(errorNumber: Int)
func getResponse() -> AnyObject{
switch self {
case .Success(value: AnyObject):
return value
case .Failure(errorNumber: Int):
return errorNumber
}
}
}
生成以下錯誤: 我沒加實際文本的錯誤,因爲我想告訴你,它甚至不會做語法高亮errorNumber和價值
最終在我的代碼我會分配該值到AnyObject
後來那anyobject將downcasted到[NSObject : AnyObject]
因此,我將有:
var data : AnyObject? // <-- from our internal framework
data = Response.Success(data)
var params = data as! [NSObject : AnyObject] // <-- from our internal framework
第一個代碼片段是我的新代碼,但內部框架是我無法更改的代碼行。
FYI我們的代碼仍然在使用Swift2 :(
你的語法是錯誤的,它應該是'情況.Success(讓值) :' –
消除getResponse()函數,將枚舉看作是一個數據值或一個錯誤,將它們重新組合成Any/AnyObject類型的單個返回值,拋出信息並導致後續的類型轉換。 –
僅僅因爲你稍後使用'AnyObject',並不意味着'Response'應該處理它 - 我會推薦nd使它成爲通用的,例如'Response',其中'成功(值:T)'(正如Price所說,你不應該將這些情況結合在一起 - 如果'Int'是一個有效的成功值? )。 –
Hamish