我的 iOs 应用程序在 Xcode 中确实有问题。它已经用 Objective-C 编码,现在我正在 Swift 中一个接一个地迁移文件。代码通过版本控制系统 (git) 在团队成员之间共享。
我从核心类(class)开始,然后这样进行:
- 我在 Swift 文件中编写新类,例如。 MyClass.swift(带有
@objc
前缀关键字) - 我替换了
#import "MyClass.h"
通过@class MyClass;
在头文件中 - 我添加
#import "MyProject-Swift.h"
在需要它的实现文件 (.m) 中 - 我删除了 MyClass.h 和 MyClass.m 文件
- 我清理并构建项目
这个过程已经成功了好几次,但由于某些原因,一些#import "MyProject-Swift.h"
不起作用,我收到错误消息:找不到“MyProject-Swift.h”文件。
根据导致问题的文件不同,有时,Ctrl+Click 会打开“MyProject-Swift.h”文件,有时则不会(无论“未找到错误”)。
但是文件存在,并且翻译后的 Swift 代码存在于其中。
另一件非常奇怪的事情,我试图从那些使用 #import "MyProject-Swift.h"
的文件中重新创建新的 .h 和 .m 文件东西和有问题,然后它工作(有时不工作,我得到其他错误)!
由于它在某些情况下有效,我真的不明白为什么它会导致其他情况出现问题。当然,我搜索了几十个主题,但没有找到有同样问题的人。
这可能是 Xcode 设置问题,还是因为团队开发人员之间的 Xcode 版本不同?
有什么想法吗?
谢谢
已编辑:
我用另一种观点来完成问题描述。
我的项目确实处于工作状态:使用我的一些新 Swift 文件,它构建和运行良好(一些 Objective-C 文件使用 Swift 文件)。
我知道某个 .m 文件有问题:
- 我添加
#import "MyProject-Swift.h"
一开始,没有别的 - Xcode 显示“MyProject-Swift.h”文件未找到,Ctrl+Click 不起作用,项目无法构建
- 但是,如果我单击带有四个小方 block 的按钮(编辑器左上角),在显示的菜单中我有“Includes”,“MyProject-Swift.h”列在它下面,然后单击“MyProject-Swift.h”打开文件!
替换 #import "MyProject-Swift.h"
通过 #import <MyProject-Swift.h>
不会改变任何东西。
我有时也会遇到这种情况:Ctrl+Click 打开“MyProject-Swift.h”,但 Xcode 显示 'MyProject-Swift.h' file not found(它也不会构建).
最佳答案
将头文件添加到您的项目,命名为[MyProjectName]-Bridging-Header.h。这将是您导入任何您想要的 Objective-C 代码的单一头文件可以访问的 Swift 代码。
在您的项目build设置中,找到 Swift Compiler – Code Generation,然后在 Objective-C Bridging Header 旁边添加您的桥接头文件的路径,从项目的根文件夹。因此它可以通过 MyProject/MyProject-Bridging-Header.h 或简单地通过 MyProject-Bridging-Header.h 如果文件位于项目根文件夹中。
您只需要一个桥接头。将您的#import 语句添加到此文件,您的类现在将在您的 Swift 代码中可用,而无需任何额外的导入语句。
关于ios - Xcode 在某些文件中找不到 Swift 桥接头文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31513544/