我已经尝试了所有,但我无法将我的Swift文件导入到Objective-C文件中

时间:2015-09-12 15:26:53

标签: ios objective-c xcode swift

我在StackOverflow上读过多个线程,我似乎无法找到问题的答案。我的文件夹层次结构如下:

"Project Name" - "Helpers" "FileIWantToImport.swift" "FileIWantToImportTo.m"

我有:

  • 将构建设置设置为具有产品模块名称FMB
  • Defines Modules设为YES
  • 由Xcode创建的桥接标题
  • 清理了我的构建
  • 我的AppDelegate中的
  • #import FMB-swift.h没有任何问题
  • 在我的文件中为我的班级声明添加了@objc,因此它显示为@objc class MyClass: NSObject

但是。我终生难以理解为什么它不会导入FileIWantToImportTo.m

我试过了:

  • #import "FMB-swift.h"
  • #import "Helpers/FMB-swift.h"
  • #import "Product Name/Helpers/FMB-swift.h"
  • #import <FMB-swift.h>
  • #import <Helpers/FMB-swift.h>
  • #import <Product Name/Helpers/FMB-swift.h>

我得到的只是"file not found"错误。有人可以指点我正确的方向吗?我查看了所有其他主题和苹果文档,但无法弄明白。我正在运行Xcode 7和10.11 GMs,如果这有所不同。

编辑:这是一个示例项目https://github.com/Aghassi/Example-Project

1 个答案:

答案 0 :(得分:3)

这是你需要做的:

  1. 在基于ObjC的项目中创建Swift文件。不需要创建桥接头,因为他们习惯于从swift看到ObjC代码,而不是来自ObjC的快速代码。

  2. 在目标中,在构建设置下将Embedded Content Contains Swift Code设置为是

  3. enter image description here

    1. 你的Swift文件应该有一个@objc公共类。

      @objc public class Example: NSObject {
          public func printSomething(text: String) {
              print(text);
          }
      }
      
    2. 检查项目的名称,并在.m文件中添加#import <ProjectsName-Swift.h>,您应该能够实例化Swift文件中定义的类及其所有公共方法。您可能需要在导入-Swift.h文件之前构建项目。

    3. 这是一个使用Swift代码的ObjC类的示例项目:https://github.com/lucaslt89/Example-Project.git