【发布时间】:2015-05-07 07:54:00
【问题描述】:
如果所有元素确实已经是 T 类型,那么将 NSArray 转换为 T 类型的 Swift Array 很容易:
let arr1 : NSArray = [1,2,3]
let arr2 = arr1 as? Array<Int> // works
但现在假设一个非同质的NSArray 与不匹配T 的对象:
let arr1 : NSArray = [1,2,3,"a"]
let arr2 = arr1 as? Array<Int> // nil, as not all elements are of type Int
我试图实现的是过滤掉所有与T 不匹配的元素。因此,在上述情况下,我想获得一个 Array<Int>,其中仅包含对象 [1,2,3]。
如何优雅地做到这一点?
【问题讨论】:
-
我不确定,但您能否创建一个
[Any],然后在转换为<T>数组之前按类型对其进行过滤?
标签: ios objective-c casting nsarray