【问题标题】:Importing Swift classes within a Objective-C Framework在 Objective-C 框架中导入 Swift 类
【发布时间】:2014-06-09 21:28:23
【问题描述】:

我有一个自定义框架,其中包含一堆 Objective-C 类。在框架内,我想使用 Swift 添加更多类。但是,当尝试使用 MyProduct-Swift.h 将 Swift 类公开给 Objective-C 代码时,它会显示为“MyProduct-Swift.h 找不到文件”。

我已经在一个单一的视图模板中尝试过了,它工作正常。框架内不能导入 Swift 吗?

我还验证了我已设置“定义模块”设置和“模块名称”。我已经尝试过使用和不使用这些设置。

【问题讨论】:

  • 这是您唯一的编译器错误吗?如果 Swift 代码未编译,则不会生成标头。
  • @SteveWaddicor 我在 Swift 代码中所做的只是声明一个自定义类。是的,这是我唯一的编译器错误。
  • 我遇到了同样的错误.. =(
  • 其实目前还没有导入swift文件的功能,因为需要将类头添加到已发布的头列表中。框架中的 Swift 文件暂时不会产生这样的头文件。

标签: objective-c xcode swift


【解决方案1】:

我发现了一些额外的步骤来完成所有工作。除了将 'Define Module' 设置为 YES 和 'Product Module Name' (如果您在 Xcode 6 中创建新的触摸框架,通常这些默认设置正确),您还需要:

  1. 为您在 Objective C 中需要的所有 Swift 类添加 'public' 关键字
  2. 您甚至需要将“public”关键字添加到要从 Objective C 访问的类中的所有方法和属性中
  3. 您需要像这样以“长”方式导入 Swift 标头:

#import <ProjectName/ModuleName-Swift.h>

【讨论】:

    【解决方案2】:

    好的,我找到了问题所在。

    确保在 Build Settings -> Packaging 中,Define Module 设置为 YES,并且 Product Module Name 也已设置。然后在故事板文件中,模块的名称应该相同,并且与您在构建设置中的名称相匹配。然后在你的 Obj-C 文件中写入 include "-Swift.h"

    这对我有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-05
      • 1970-01-01
      • 1970-01-01
      • 2018-09-17
      • 1970-01-01
      • 2015-09-14
      • 1970-01-01
      • 2018-07-02
      相关资源
      最近更新 更多