我正在尝试将其转换NSArray
为Swift Set
.
没有太多运气.
这样做的正确方法是什么?
例如,如果我有一个NSArray
数字:
@[1,2,3,4,5,6,7,8]
如何Set
从中创建Swift NSArray
?
如果你肯定知道的是,NSArray
只包含对象数,那么你可以将其转换为一个斯威夫特阵列Int
(或Double
或者
NSNumber
,根据您的需要),并创建一套:
let nsArray = NSArray(array: [1,2,3,4,5,6,7,8]) let set = Set(nsArray as! [Int])
如果无法保证,请使用可选的强制转换:
if let set = (nsArray as? [Int]).map(Set.init) { print(set) } else { // not an array of numbers }
另一种变体(由@ JAL的评论推动):
let set = Set(nsArray.flatMap { $0 as? Int }) // Swift 4.1 and later: let set = Set(nsArray.compactMap { $0 as? Int })
这给出了一组NSArray
可转换为的所有元素Int
,并默默地忽略所有其他元素.