【问题标题】:Import Swift Framework in Objective-C Project - Error - Unknown Type Name在 Objective-C 项目中导入 Swift 框架 - 错误 - 未知类型名称
【发布时间】:2016-10-21 07:34:13
【问题描述】:

我一直在努力解决这个特定问题。基本上我已经使用Carthage 添加了一个框架BigNerdRanch CoreDataStack

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

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

据我了解,我必须像这样导入它:

#import <CoreDataStack/CoreDataStack-Swift.h>

我在 AppDelegate.m 上所做的。

我的项目也有以下设置:

项目目标设置:

Swift 编译的构建设置:

我在 StackOverflow 中看到了一些将公共添加到类的答案。但我无法这样做,因为导入的框架是自包含的,并且只包含我在 XCode 项目中查看的标题。

感谢大家的帮助。

【问题讨论】:

  • 请不要使用这个#import 而不是你的框架名称
  • 试过 或 "ProjectModule-Swift.h" 都不适合我。我需要在 *-Swift.h 文件中添加特定的导入吗?您的建议是否可行?

标签: ios objective-c xcode swift carthage


【解决方案1】:

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

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

@objc class coreDataStackConvertor: NSObject {

    func createStack(arg: Type) {

        // Code which uses the real CoreDataStack
    }

}

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

【讨论】:

  • 我怎么知道一个框架是否只能在 Swift 上运行?
  • 通过他们在 git 和源代码中的文档,我看不到对目标 c 的支持,他们所有的源文件都在 swift 中,他们的最低要求之一是 swift 2.2...
  • 我很惭愧。我一直认为任何 Swift 代码都可以在 Obj-C 上运行,而忽略了您需要添加“@objc-ish line”这一事实。非常感谢@oren,您提供了很好的服务。现在,如果我有足够的声誉,我会赞成你的回答。一旦我这样做,我一定会重新审视这个。 [书签]。再次感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-09-17
  • 2015-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多