我使用反射尝试使用XCode 7 Beta JSON Serializer创建 Swift 2.0。我得到一个被解包成Any的值?类型。我可以通过说:
来检查它是否是一个数组if value is NSArray { ... }
但这对包含
等选项的数组不起作用Array<Int?>
Array<Double?>
等...我有两个问题:
如何检查包含任何可选类型的数组的类型?
如果它包含哪种类型,无论是选项还是非选项,我如何迭代这样的数组?
请参阅此要点中的注释以获取上下文: https://gist.github.com/peheje/d69351ce2181ba349337 到目前为止,似乎工作正常,只要数组不包含选项。
答案 0 :(得分:0)
好的回答我自己的问题:
为了检查包含可选值的数组,我完全详细了。它不会捕获填充了可选自定义对象的数组。至于转换为可以迭代的数组,我使用Array构造函数和arrayLiteral参数。
if value is Array<Int?> || value is Array<Double?> || value is Array<Float?> ||
value is Array<Bool?> || value is Array<String?> {
let array = Array(arrayLiteral: value)
for i in array {
print(i)
}
}
有趣的是,我仍然无法解开价值!算子。总是作为选项。
尽可能详细:
if value is Array<Int?> || value is Array<Double?> ||
value is Array<Float?> || value is Array<Bool?> || value is Array<String?> {
let array: Array<Any?>? = Array(arrayLiteral: val)
for i in array! {
print(i!)
}
}
仍然返回: [可选(1),无,可选(3),可选(4),可选(5),可选(6)] 对于:
Array<Int?>
这可能是一个错误,Swift 2.0仍在开发中,所以是的。
修改强>
原来我不会迭代超过1次......无法访问每个元素。我将把它留在这个地方。