哭哭 ,又是型态的问题
以下的 func 就是要让它 没有值的时候回传 nil 我就是要它回传nil 但,就是会报错,又不是NSMutabledictionary 或是 NSMutableArry 一定要有值,我已经指定是AnyObject (老师说 anyobject 是可以为 nil 的)
我该怎么让它回传nil呢
真心请教
func rtnChildArray(catno:Int) -> AnyObject {
var rtn:AnyObject!
for i in CateDictionary {
let tmpNSMutableArry = NSMutableArray();
if (i["catno"] as! NSString).integerValue == catno {
rtn = i["child"]
break
}
else {
if (i.objectForKey("child") as! NSMutableArray).count > 0 {
for j in (i.objectForKey("child") as! NSMutableArray) {
if (j["catno"] as! NSString).integerValue == catno {
print(j["child"])
rtn = j["child"]
break
}
}
}
}
}
return rtn
}
如楼上所述,在后面加个问号就可以回传 nil 了。原因是这样的:在 swift 里默认都是不可空的,不管是 AnyObject 还是 Int 还是任何自定义的类型,都必须要有非 nil 的值。除非指定它为 optional 类型。
之所以这么设计,是为了让语言更安全,或者说在编译期就发现更多潜在的问题,如果有潜在的错误,就很容易编译不通过(比如给一个不能为 nil 的参数传了一个有可能为 nil 的值,或者你这里的这个情况,在一个不能返回 nil 的函数里返回了一个可能为 nil 的值等)。