swift 4中的冗余超类约束

时间:2017-10-25 05:24:15

标签: swift

我在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),其中DataSourceItemItem

如果我将==运算符替换为:,则警告消失:

extension DataSourceProtocolProvider {
    func createDataSource<T: DataSourceProtocol>(dataSource: T) 
         where T.DataSourceItem : Item {
    }
}

现在恰好是一个完全不同的背景。此约束指定我希望func createDataSource<T: DataSourceProtocol>(dataSource:T) DataSourceItemItem子类。这与DataSourceItem Item对象不同。 此外,代码与==运行良好,所以我只是不了解约束如何工作?

0 个答案:

没有答案