我正在尝试为属性列表值实现类型安全。
我已经定义了一个空协议PropertyListValue
,并为相应的类型创建了扩展。
protocol PropertyListValue {
}
extension Data: PropertyListValue {}
extension Date: PropertyListValue {}
extension String: PropertyListValue {}
extension Int: PropertyListValue {}
extension Double: PropertyListValue {}
extension Array: PropertyListValue where Element: PropertyListValue {}
extension Dictionary: PropertyListValue where Value: PropertyListValue {}
问题在于集合类型。我收到错误:
扩展类型'数组'带约束不能有继承 条款
我也尝试过使用:
extension Array<PropertyListValue>: PropertyListValue {}
但是我收到了错误:
必须在非专用泛型上声明约束扩展 type&#39; Array&#39;具有由&#39;其中&#39;指定的约束。条款
如果只包含协议类型,我怎样才能扩展Array和Dictionary以符合协议?