1
我想在Swift的内置字典中添加一个扩展,使用关于键和值类型的约束。使用约束扩展字典
事实上,我会使用NSCalendarUnit作为字典的键和AnyObject作为值;为了做到这一点,我伸出NSCalendarUnit是符合哈希的协议:
extension NSCalendarUnit: Hashable {
public var hashValue: Int {
get {
return Int(self.rawValue)
}
}
}
然后我创建了我的字典的扩展:
extension Dictionary where Value: AnyObject, Key: NSCalendarUnit {
public func myFunc() -> ... {
// ... code
}
}
虽然构建succeded我可以在里面看到一个错误控制台:
Type 'Key' constrained to non-protocol type 'NSCalendarUnit'
有什么想法吗?
太棒了!非常感谢你 – danielemm
@danielemm欢迎你。看到NSString那里!字符串不能转换为AnyObject ...最好避免使用“伪通用”方法,并尽可能使用正确类型,或使用真正的通用方法。 – user3441734
不幸的是我不能使用String,因为NSCalendarUnit可以包含NSCalendar和NSTimeZone对象以及其他值(由Int表示)。 – danielemm