(通过删除类型,我的意思是:(Any
,AnyHashable
,AnyObject
),protocol
或根类NSObject
)。
我问这个问题,因为在下面的代码中我无法将something
初始化为AnyObject
。我收到错误:
无法为“AnyObject”类型调用初始化程序?没有参数
我正在寻找合适的workAround。我认为正确的选择是在每个陈述中初始化something
......
func returnObject() -> AnyObject{
var something = AnyObject()
if x == someProperty{
something = y
}
else if x == anotherProperty{
something = z
}else{
something = t
}
return something
}
答案 0 :(得分:2)
您希望初始化做什么?无论如何,如果您计划立即使用something
,y
或z
覆盖t
,这有什么关系?
func returnObject() -> AnyObject {
let something: AnyObject
if x == someProperty{
something = y
}
else if x == anotherProperty{
something = z
}
else{
something = t
}
return something
}
但是,使用switch
:
func returnObject() -> AnyObject {
let something: AnyObject
switch x {
case someProperty: something = y
case anotherProperty: something = z
default: something = t
}
return something
}
如果您刚刚返回something
,则可以将其内联:
func returnObject() -> AnyObject {
switch x {
case someProperty: return y
case anotherProperty: return z
default: return t
}
}