【问题标题】:Type "SwiftClass" cannot conform to protocol "ObjcProtocol" because it has requirements that cannot be satisfied类型“SwiftClass”不能符合协议“ObjcProtocol”,因为它有无法满足的要求
【发布时间】:2015-10-02 20:37:56
【问题描述】:

我有一个 Objective-C 协议,我试图在 Swift 类中实现它。例如:

@class AnObjcClass;

@protocol ObjcProtocol <NSObject>
    - (void)somethingWithAnArgument:(AnObjcClass *)arg;
@end

当我尝试在这样的 Swift 类中遵循它时:

@objc class SwiftClass: NSObject, ObjcProtocol {
    // ...
}

我收到以下可怕的编译器错误:

类型“SwiftClass”不能符合协议“ObjcProtocol”,因为它有无法满足的要求。

我该如何解决这个问题?

【问题讨论】:

    标签: objective-c swift objective-c-protocol objective-c-swift-bridge


    【解决方案1】:

    确保该协议引用的所有类都包含在您的桥接头中。

    当协议中使用的一种类型(协议本身、返回类型、参数类型)未包含在您的 Swift 桥接头中时,会发生此错误。

    由于 @class AnObjcClass 前向声明,Objective-C 类可以愉快地实现此协议,但似乎 Swift 类无法实现使用仅前向声明的类的协议。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多