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

Jam*_*mes 1 xcode objective-c ios swift carthage

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

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

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

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

#import <CoreDataStack/CoreDataStack-Swift.h>
Run Code Online (Sandbox Code Playgroud)

我在AppDelegate.m上做了.

我的项目也有以下设置:

项目目标设定:

在此输入图像描述

构建Swift编译的设置:

在此输入图像描述

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

在此输入图像描述

谢谢你的帮助.

ore*_*ren 6

你添加了一个用swift编写的框架,如果它们不支持Objective C,你就不能在你的客观c代码中使用它.

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

@objc class coreDataStackConvertor: NSObject {

    func createStack(arg: Type) {

        // Code which uses the real CoreDataStack
    }

}
Run Code Online (Sandbox Code Playgroud)

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

  • 我很惭愧.我一直都认为任何Swift代码都可以在Obj-C上运行而忽略了你需要添加"@ objc-ish line"的事实.非常感谢@oren你一直都很棒.如果我有足够的声誉,现在我会回答你的答案.一旦我这样做,我肯定会重温这一点.[书签].再次感谢. (2认同)