相似类型:不能特化非泛型定义

Similar types: Cannot specialize a non-generic definition

我有一个控制器,我需要在其中导入两个 pods。

import Realm
import ReactiveSwift

问题是两者都有一个名为 Property.

的类型

现在如果我将它与导入两者一起使用 pods 那么它会给我编译时错误 Cannot specialize a non-generic definition.

对于解决方法,

我创建了一个单独的文件并向控制器添加了扩展名,仅在该文件中导入了 Realm。并将 ReactiveSwift 保存在控制器文件中。这有助于我防止错误。但这是最好的方法吗?

为了让编译器能够决定您要使用哪个 Property 元素,您必须添加命名空间。在这种情况下:

  • Realm.Property 使用 Realm
  • 中的 Property 元素
  • ReactiveSwift.Property 使用 ReactiveSwift
  • 中的 Property 元素

所以这里的问题是 'Property' 在 RealmSwift 和 ReactiveSwift 中也可用。

所以这里如果你想使用 Realm 属性 如上答案建议你 可以添加 Realm.propertyReactiveSwift.Property 来访问元素。

除此之外,您还可以创建 typealias,还可以使用 extension[=12= 将代码分成两个文件]