【问题标题】:Convert Swift Set to NSMutableSet将 Swift Set 转换为 NSMutableSet
【发布时间】:2018-02-27 20:26:42
【问题描述】:

我可以从 NSMutableSet 转换为 Set 没问题,但是在执行反向操作时遇到了问题。

例如这行得通:

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

但是当我尝试时:

let nsSet2 = swiftSet as? NSMutableSet

nsSet2 最终成为 nil

【问题讨论】:

  • 不要那样做。根本不要在 Swift 中使用 NSMutable... 集合类型。 Setvar 是免费可变的(并且类型安全)。
  • @vadian 需要存储在 NSUserDefaults 中,例如
  • 我对此表示怀疑。 NS(Mutable)Set 不是符合属性列表的类型
  • @vadian:是的,你是对的。原来我是looking at NSKeyValueCoding methods instead

标签: swift type-conversion set nsset


【解决方案1】:

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

let nsSet2 = NSMutableSet(set: set as NSSet)

或简写:

let nsSet2 = NSMutableSet(set: set)

或者从 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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多