我try 将名为AnalyticProtocol的Swift协议导入名为AnalyticFactory的Objective-C类.

protocol AnalyticProtocol
{

}

I'm starting from an existing Objective-C project (I didn't create a new Swift project with xCode and I didn't found how configure my Objective-C project to be a Swift project in xCode 6).

在我的Swift文件中,我包含了名为MyProjectName-Swift.h.h文件,但编译器返回了一个错误,告诉我it doesn't exist.

Apple documentation中,他们说我必须在.m文件中包含我的.h文件MyProjectName-Swift.h.但我需要把它写进我的.h,而不是我的.m文件.这会有问题吗?

当我试图编译时,我得到了这个错误::0: error: xxxAnalyticFactory.h:39: cannot find protocol declaration for 'AnalyticProtocol'

以及被定罪的代码:

@interface AnalyticFactory : NSObject
{
    Class<AnalyticProtocol> _analyticProtocolClass; // The type of the analytic class currently used.
}

我想我不太明白如何将Swift协议导入Objective-C类.

有人看到我做的错误吗?

推荐答案

您需要在Swift协议中添加@objc属性,如下所示:

@objc protocol AnalyticProtocol {

}

Swift相关问答推荐

如何在Swift 中创建移动的uil标签?

是否可以循环遍历SWIFT子类并访问它们的静态变量S?

background Task(.backgroundTask)不适用于MySQL

将NavigationSplitView更改为NavigationStack

在NavigationStack上设置拐角半径:SwiftUI中的无响应内容视图区

如何使用可搜索在搜索栏中搜索包括>或<?

Swift 包管理器 Package.resolved 文件末尾的版本是什么意思?

如何制作具有 2 个视图的 3D 旋转动画?

状态变量更改后,SwiftUI 视图不会更改

来自数据的 SwiftUI 图像

如何让不同的组件拥有不同的动画?

如何将回调传递给 View init

为什么 switch 在 optional 中不接受 case nil?

为什么 `map(foo)` 和 `map{ foo($0) }` 返回不同的结果?

在视图中设置所有变量

符合协议要求委托变量在 ios13 中可用

NSFontAttributeName 已更改为 String

在 Swift 中覆盖 UIScrollView 的委托属性(就像 UICollectionView 一样)

WKWebView 确实从本地文档文件夹加载资源

swift中静态函数和单例类的区别