我想扩展字典并将其限制为具有类型值的 NSDate 的特定键类型Array<MyClass>
MyClass 是一个没有子类的 swift 类。
extension Dictionary where Key: NSDate, Value: Array<MyClass>{
func myFunction() -> Int{
// Some thing useful
}
}
上面的代码返回一个构建错误:
类型“值”限制为非协议类型“数组”
好的,所以它似乎需要被限制到一个特定的协议,但奇怪的是,当我将 Value 限制为:
扩展字典,其中键:NSDate,值:MyClass
编译器不会抱怨并且构建成功。但是 MyClass 不是协议。那么给了什么?
我设法像这样限制它:
extension Dictionary where Key: NSDate, Value: CollectionType, Value.Generator.Element: MyClass{
func myFunction() -> Int{
var count = 0
for (_, graphicItemArray) in self{
count+= (graphicItemArray as! [MyClass]).count
}
return count
}
}
但这需要强制转换,因为我需要以整数形式获取 count 属性。
那么为什么我不能将它明确地限制为 [MyClass] 的值类型呢?