我在swift4中收到Redundant superclass constraint...
警告:
(在操场上粘贴)
import CoreData
class Item : NSManagedObject {}
protocol DataSourceProtocol {
associatedtype DataSourceItem : NSManagedObject
}
protocol DataSourceProtocolProvider : class { }
extension DataSourceProtocolProvider {
func createDataSource<T: DataSourceProtocol>(dataSource: T)
where T.DataSourceItem == Item {
}
}
在createDataSource<T: DataSourceProtocol>
声明中,我收到以下警告:
Redundant superclass constraint 'T.DataSourceItem' : 'NSManagedObject'
我认为您可以指定关联类型可以与==
运算符一起使用,以将关联类型约束为特定类型。我想要一个功能createDataSource<T: DataSourceProtocol>(dataSource:T)
,其中DataSourceItem
是Item
。
如果我将==
运算符替换为:
,则警告消失:
extension DataSourceProtocolProvider {
func createDataSource<T: DataSourceProtocol>(dataSource: T)
where T.DataSourceItem : Item {
}
}
现在恰好是一个完全不同的背景。此约束指定我希望func createDataSource<T: DataSourceProtocol>(dataSource:T)
DataSourceItem
是Item
的子类。这与DataSourceItem
Item
对象不同。
此外,代码与==
运行良好,所以我只是不了解约束如何工作?