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

标签 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 上做的。

我的项目也有以下设置:

Project Target Setup:

enter image description here

Build Settings for Swift Compilation:

enter image description here

我一直在 StackOverflow 中看到一些将 public 添加到类中的答案。但我无法这样做,因为导入的框架是独立的,并且只包含供我在 XCode 项目中查看的 header 。

enter image description here

谢谢大家的帮助。

最佳答案

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

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

@objc class coreDataStackConvertor: NSObject {

    func createStack(arg: Type) {

        // Code which uses the real CoreDataStack
    }

}

从您的 objective-c 类中,您可以使用转换器类中的方法。

关于ios - 在 Objective-C 项目中导入 Swift 框架 - 错误 - 未知类型名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37915852/

相关文章:

xcode - 缺少常规选项卡

ios - 使物理体响应场但不响应其他物理体

ios - 如何在 WKWebView 使用 Swift 更改之前获取输入值?

ios - 是否可以同时在屏幕上激活来自 2 个不同 Storyboard的 2 个 View Controller ?

ios - 为新版本的应用程序启用应用内购买吗?

ios - UIAlertView 具有多个文本输入?

iphone - 如何在 iPhone 中制作无限 ScrollView ?

objective-c - Swift 中的飞利浦 HUE SDK

swift - Xcode 12 Storyboard缩放窗口

xcode - "Strip Debug Symbols During Copy"和 "Strip Linked Product"