【发布时间】:2019-09-24 11:13:54
【问题描述】:
在NSXPCInterface.setClasses(_:for:argumentIndex:ofReply:)的Apple documentation中,对于Swift,第一个参数描述为:
一个包含 Class 对象的 NSSet——例如,[MyObject class]。
嗯,似乎有人忽略了将其从 Objective-C 更新到 Swift。对于 Swift,我认为它应该类似于
包含类类型的集合
(有人请纠正我的措辞。)但是你如何制作一个包含类类型的集合?编译器不允许我声明一个成员类型不符合的Set Hashable。这是有道理的,因为需要散列来保持成员之间的唯一性。但是 Swift 中的类类型似乎不是可散列的。在任何 Swift 文件或操场上试试这个……
class Foo {}
let mySet: Set<AnyHashable>
mySet.insert(Foo)
编译器抱怨:
参数类型 'Foo.Type' 不符合预期的类型 'Hashable'
或者,更广泛地说,有谁知道如何在 Swift 5 中使用 NSXPCInterface.setClasses(_:for:argumentIndex:ofReply:)?
【问题讨论】: