我有一个应该返回String
或Array
的函数:
func someFunc(isList:Bool=false) -> AnyObject {
if isList {
var results:[AnyObject] = [11, "123", [], "22"]
return results
} else {
var result = "123"
return result
}
}
但是编译器说:
返回'[AnyObject]'类型的表达式不符合 'AnyObject'
答案 0 :(得分:1)
您的结果变量必须是AnyObject类型而不是[AnyObject]。基本上,您需要将AnyObjects数组转换为单个AnyObject
func someFunc(isList:Bool=false) -> AnyObject {
if isList {
var results: AnyObject = [11, "123", [], "22"]
return results
} else {
var result = "123"
return result
}
}
答案 1 :(得分:0)
“AnyObject”是任何对象。 [AnyObject]是一个数组,数组是值,而不是对象。您尝试返回的另一个值是一个字符串,它也是一个值,而不是一个对象。
你的函数应该返回Any,或者更好的是枚举两个案例,一个案例[Any]和一个案例String。
答案 2 :(得分:0)
你能让它回归吗?
func something(list: Bool = false) -> Any {
if list {
return [11, "123", [], "22"]
} else {
return "123"
}
}
let result = something(true)
let result0 = something(false)
任何可以表示任何类型的实例,包括函数类型。
Apple文档建议不要以这种方式使用 Any 协议。
注意:仅当您明确需要它们提供的行为和功能时才使用Any和AnyObject。最好具体了解您希望在代码中使用的类型。