Swift 检查值是否为数组类型(任何类型)

标签 swift generics

如果值是数组,我如何在 Swift 中检查。问题是 Int 类型的数组显然不能转换为 Any 类型的数组。假设我有一个类型为 Int 的数组 myArray 并执行以下命令:

if let array = myArray as? [Any] { return true }

它不会返回 true(这实际上让我感到惊讶)。同样的事情也出现在字典上。我想要一个 String, Any 类型的字典(意味着 Any 可以是任何类型)。我如何检查它是否存在?

提前致谢。

最佳答案

得到它像这样工作,虽然它没有我希望的那么漂亮:

protocol ArrayType {}
extension Array : ArrayType {}

let intArray : Any = [1, 2, 3]
let stringArray : Any = ["hi", "hello", "world"]

intArray is ArrayType       // true
stringArray is ArrayType    // true

编辑:我想我之前误解了你的问题,但现在我明白了:

let intArray = [1, 2, 3]

let anyArray = intArray.map{ $0 as Any }

这是我所知道的唯一途径。

关于Swift 检查值是否为数组类型(任何类型),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32033993/

相关文章:

Java:继承泛型类并设置其类型

c# - 需要有关 C# 泛型的帮助

typescript :映射类型中的枚举键

ios - 当我将图像上传到 Firebase Storage 时,会出现额外的图像。 swift 4、Xcode 9

swift - Swift 中的模态视图

c# - 使用 List<T> 参数构造 HashSet<T> 时是否允许重复?

angular - 使用 Angular 4 注入(inject)接口(interface)

ios - AVCapturePhotoSettings.flashMode 不适用于设置设备的闪光模式

ios - UIStackView 是否像 UITableView 一样有委托(delegate)?

ios - 在iOS中使用多个播放按钮播放声音