在Objective-C项目中导入Swift框架 - 错误 - 未知类型名称

时间:2016-06-20 06:29:05

标签: ios objective-c xcode swift carthage

我一直在和这个具体问题搏斗一段时间。基本上我使用BigNerdRanch CoreDataStack添加了一个框架Carthage

但是我一直有在我的Objective-C代码上使用上述框架的问题。我的项目是一个Objective-C项目,我最近在其中添加了Swift代码和Swift框架。

到目前为止,我已经能够在我的Swift代码中使用Swift框架而没有任何问题。但是一旦我开始在我的旧Obj-C上使用上述Swift框架,特别是AppDelegate.m,无论如何我都会遇到编译器错误。

根据我的理解,我必须像这样导入它:

#import <CoreDataStack/CoreDataStack-Swift.h>

我在AppDelegate.m上做了。

我的项目也有以下设置:

  

项目目标设定:

enter image description here

  

构建Swift编译的设置:

enter image description here

我一直在StackOverflow中看到一些答案,可以将公共内容添加到类中。但我无法这样做,因为导入的Frameworks是自包含的,只包含Headers供我在XCode项目中查看。

enter image description here

感谢帮助人员。

1 个答案:

答案 0 :(得分:6)

您添加了一个用swift编写的框架,如果它们不支持Objective C,则不能在目标c代码中使用它。

但是,您可以在swift中创建一个类,它将用作框架和ObjC类之间的中介。

@objc class coreDataStackConvertor: NSObject {

    func createStack(arg: Type) {

        // Code which uses the real CoreDataStack
    }

}

从Objective c类中,您可以使用convertor类中的方法。