我已经创建了一个响应枚举为我的网络返回值和一个函数,它应该返回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