我有一个接受 Any 的 Swift 函数,我希望它能够接受字符串数组、整数数组、混合数组或数组数组等。它也可以只接受字符串或整数,等等,不在数组中。
所以我有这个:
private func parse(parameter: Any) {
if parameter is Int {
// Int
} else if (parameter is Float) || (parameter is Double) {
// Double
} else if parameter is String {
// String
} else if parameter is Bool {
// Bool
} else if let array = parameter as? [Any] {
// Should catch all Arrays
} else {
assert(false, "Unsupported type") // [String] ends up here
}
}
但如果我打电话parse(["Strings"])
,提出断言。如何捕获所有类型的数组?
编辑-对于我想要完成的任务有些困惑。我基本上需要根据类型返回一个 String,因此 Int -> "" 和 String -> "",因此数组将进行递归调用以返回 "..."
这篇文章被标记为重复,但另一个问题是关于 Javascript,而不是 Swift。
我终于找到了方法,那就是使用NSArray
用于铸造。
private func parse(x: Any) {
if let o = x as? [Any] {
println("[Any]")
}
if let o = x as? [AnyObject] {
println("[AnyObject]")
}
if let o = x as? NSArray {
println("NSArray")
}
}
let a: [Any] = ["bar"]
let b: [AnyObject] = ["bar"]
let c = ["foo", 3.14]
parse(a) // ==> [Any]
parse(b) // ==> [AnyObject], and also NSArray
parse(c) // ==> NSArray
看起来包含值的数组Any
内部代表NSArray
。
(但是如果它能够投射c
to [Any]
...?我怀疑这是一个错误。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)