在Objective-C类中导入Swift协议

在Objective-C类中导入Swift协议

问题描述:

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

I try to import a Swift Protocol named AnalyticProtocol into an Objective-C class named AnalyticFactory.

protocol AnalyticProtocol
{

}

我从一个现有的Objective-C项目开始(我没有使用xCode创建一个新的Swift项目,也没有发现如何在xCode 6中将我的Objective-C项目配置为Swift项目).

在我的Swift文件中,我包含了一个名为MyProjectName-Swift.h.h文件,但是编译器向我返回一条错误消息,告诉我该文件不存在. 因此,我创建了一个名为MyProjectName-Swift.h.h文件,该文件实际上是空的(我不知道该放在里面).

In my Swift file I included the .h file named MyProjectName-Swift.h but the compiler return me an error telling me that it doesn't exist. So, I created a .h file named MyProjectName-Swift.h which is actually empty (I don't know what I should put inside).

In the Apple documentation they said that I have to include my .h file named MyProjectName-Swift.h in my .m file. But I need to include it not into my .mfile but into my .h. Does this can be problematic?

当我尝试编译时,出现以下错误::0:错误:xxxAnalyticFactory.h:39:找不到"AnalyticProtocol"的协议声明

When I try to compile I've got this error: :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类中.

I think I don't understand well how can I import a Swift protocol into an Objective-C class.

有人在我做的事情中看到错误吗?

Does anyone see an error in what I'm doing?

您需要像这样将@objc属性添加到您的Swift协议中:

You need to add the @objc attribute to your Swift protocol like so:

@objc protocol AnalyticProtocol {

}