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