Swift的"Bridging-Header.h"文件不允许我在.swift文件中实例化Objective-C类。

6 浏览
0 Comments

Swift的"Bridging-Header.h"文件不允许我在.swift文件中实例化Objective-C类。

每次X-code尝试自动创建桥接标头时,都会崩溃,所以我按照手动创建桥接标头的说明进行操作。

(创建一个.h文件,命名为<#PROJECT_NAME>-Bridging-Header.h,导入所有需要的.h文件?)

问题是,当我尝试在包含在该标头中的.swift文件中实例化一个类时,什么都没有发生(它说该类不存在)。另外,在桥接标头中,当我尝试包含文件名时,似乎没有自动完成,这让我相信某些链接不正确。

有人遇到过这个问题吗?有人知道如何解决吗?

0
0 Comments

问题的出现原因:在Swift项目中,如果想要在.swift文件中实例化Objective-C类,需要使用Bridging-Header.h文件来进行桥接。然而,有时候自己创建的Bridging-Header.h文件可能会出现问题,导致无法正确实例化Objective-C类。

解决方法:根据描述,解决方法如下:

1. 首先,尝试手动创建Bridging-Header.h文件,但是Xcode无法识别。

2. 然后,删除自己创建的Bridging-Header.h文件。

3. 导入一个Objective-C文件,这可能会触发Xcode询问是否要为你创建Bridging-Header.h文件。

4. 点击"Yes",Xcode将自动为你创建Bridging-Header.h文件。

5. 这样,就可以在.swift文件中正确实例化Objective-C类了。

补充问题:如何导入ObjC文件?是在Build Settings中还是其他地方?

以上描述中没有提及导入ObjC文件的具体位置。根据常规做法,可以通过下面的步骤来导入ObjC文件:

1. 在Xcode中,选择你的项目。

2. 在"Targets"下找到你的主目标。

3. 在"Build Phases"选项卡下,展开"Compile Sources"。

4. 点击"+"按钮,添加你的ObjC文件。

这样,你就成功导入了ObjC文件,可以在.swift文件中正确实例化Objective-C类了。

0
0 Comments

问题出现的原因是没有正确设置Objective-C的桥接头文件。

解决方法是在项目中创建一个名为"FMDB-Bridging-Header.h"的文件,然后在该文件中导入"FMDB.h"头文件。接下来,在项目的Build Settings中找到Swift Compiler - Code Generation选项,将"Objective-C Bridging Header"设置为"FMDB-Bridging-Header.h"。如果该文件放在项目的子目录中,可以将路径设置为"FolderName/FMDB-Bridging-Header.h"。不需要在桥接头文件中再次导入"FMDB.h"头文件。这个解决方法可以帮助找到问题所在,即使桥接头文件被移到了项目的子目录中,项目的Build Settings仍然没有反映出这个改变。

0
0 Comments

问题的出现原因是没有将Bridging Header文件添加到目标的构建设置中。解决方法是在Xcode中进入目标的构建设置,然后在"Swift Compiler - Code Generation"(在Xcode 8中是"Swift Compiler-General")部分中设置"Objective-C Bridging Header"为"<#PROJECT_NAME>-Bridging-Header.h"。另外,也可以尝试将"Install Objective-C Compatibility Header"设置为"Yes"。这样做可以解决无法在.swift文件中实例化Objective-C类的问题。

这个问题的解决方法对于一些人来说非常有帮助,特别是当他们尝试使用FMDB时遇到了类似的问题。某些情况下,他们遇到了一个奇怪的问题,即尝试加载一个找不到的Bridging Header文件,所以他们删除了这个键的值,然后问题得到了解决。

还有一个人提到了一个特殊情况,他想将Objective-C类转换为Swift,但只想将其中的一个类转换为Swift。由于这个类依赖于其他Objective-C类,所以这些类被添加到了Bridging Header文件中。但是,在转换的类中无法导入目标的Swift头文件,因为转换的类本身就存在于Bridging Header文件中,这会导致明显的错误。他询问是否有其他解决方案,除了也将这些类转换为Swift,因为它们是大型的类。

以上是关于Swift "Bridging-Header.h"文件不允许在.swift文件中实例化Objective-C类的问题的原因和解决方法的整理。

0