为了查看在 中出现了多少Person
具有特定标识符的对象NSCountedSet
,我创建了以下函数:
public extension NSCountedSet {
public func countFor(identifier: String) -> Int {
let p = self.compactMap { $0 as? Person }.filter { $0. identifier == identifier }
return self.count(for: p)
}
}
效果很好,但它非常适用于Person
.
所以我试图让它通用:
public func countFor<T: Identifiable >(type: T, identifier: String) -> Int {
let p = self.compactMap { $0 as? T.Type }.filter { $0. identifier == identifier }
return self.count(for: p)
}
Person
符合Identifiable
协议:
public protocol Identifiable {
var identifier: String { get }
}
和:
extension Person: Identifiable {
public var identifier: String {
return name
}
}
这给了我这个错误:
实例成员“标识符”不能用于类型“T”
当我调用此函数时,出现以下错误:
参数类型“Person.Type”不符合预期类型“可识别”
我错过了什么,有没有办法让它工作?