子类化泛型

时间:2017-09-28 07:04:40

标签: swift syntax

Xcode 9有一个新警告,可以解决以下问题。警告是

  

冗余超类约束

class TypeA<T: NSManagedObject> {}

class TypeB<L: NSManagedObject, U: TypeA<L>> {}

class TypeC<Event> {}

鉴于Event是NSManagedObject的子类,我能以什么方式抑制上述警告?

由于

1 个答案:

答案 0 :(得分:0)

您可以在报告导航器中的完整编译器输出中找到更多信息:

main.swift:7:16: warning: redundant superclass constraint 'L' : warning: redundant superclass constraint 'L' : 'NSManagedObject'
class TypeB<L: NSManagedObject, U: TypeA<L>> {}
               ^
main.swift:7:36: note: superclass constraint 'L' : 'NSManagedObject' inferred from type here
class TypeB<L: NSManagedObject, U: TypeA<L>> {}
                                   ^

这意味着在

class TypeB<L: NSManagedObject, U: TypeA<L>> {}

L: NSManagedObject中隐含地给出限制TypeA<L>, 已经将L限制为NSManagedObject的子类。

您可以从classB声明中删除该约束:

class TypeB<L, U: TypeA<L>> {}