swift - 泛型子类化

标签 swift syntax

Xcode 9 有一个新的警告,该警告会针对以下问题亮起。警告是

redundant superclass constraint

class TypeA<T: NSManagedObject> {}

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

class TypeC<Event> {}

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

谢谢

最佳答案

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

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>> {}

关于swift - 泛型子类化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46462902/

相关文章:

ios - 从 CMMotionManager 获取 SCNCamera 的正确值

swift - 用于在 UICollectionView 中下载和显示图像的 UIImageView 扩展

ios - 如何在单击时替换 SKSpriteNode 的图像

syntax - 当我不使用双分号时 ocamlc 失败

haskell - GADT 头中的类型变量有意义吗?

ios - 具有一个参数/参数的泛型类的泛型类

swift - 如何更改 Facebook 确认对话框项目名称?

regex - 在 Swift 3 中验证 URL

javascript - 属性名称的 JSON 语法

.net - 简化 ReaderWriterLockSlim 语法