将 Swift 集转换为 NSMutableSet

Sen*_*ful 4 set type-conversion nsset swift

我可以从 NSMutableSet 转换为 Set 没问题,但我在做相反的事情时遇到了问题。

例如这有效:

let nsSet = NSMutableSet(array: ["a", "b"])
let swiftSet = nsSet as! Set<String>
Run Code Online (Sandbox Code Playgroud)

但是当我尝试:

let nsSet2 = swiftSet as? NSMutableSet
Run Code Online (Sandbox Code Playgroud)

nsSet2最终成为nil.

Sen*_*ful 5

看起来需要先将 swift Sets 转换为 NSSet :

let nsSet2 = NSMutableSet(set: set as NSSet)
Run Code Online (Sandbox Code Playgroud)

或简写:

let nsSet2 = NSMutableSet(set: set)
Run Code Online (Sandbox Code Playgroud)

或者从 NSSet 到 Swift Set 再回到 NSSet:

let nsSet = NSMutableSet(array: ["a", "b"])
let set = nsSet as! Set<String>
let nsSet2 = set as NSSet
let nsSet3 = NSMutableSet(set: nsSet2)
Run Code Online (Sandbox Code Playgroud)