GVKun编程网logo

Swift“ Bridging-Header.h”文件不允许我实例化.swift文件中的Objective-C类(swift不支持静态库)

15

对于想了解Swift“Bridging-Header.h”文件不允许我实例化.swift文件中的Objective-C类的读者,本文将是一篇不可错过的文章,我们将详细介绍swift不支持静态库,并且为

对于想了解Swift“ Bridging-Header.h”文件不允许我实例化.swift文件中的Objective-C类的读者,本文将是一篇不可错过的文章,我们将详细介绍swift不支持静态库,并且为您提供关于ios – Swift Bridging Obj和Obj-C类的可见性、ios – Swift“Bridging-Header.h”文件不允许我在.swift文件中实例化目标c类、ios – 我应该在我的混合Objective-C / Swift项目中使用Realm Objective-C或Realm Swift吗?、ios – 混合Swift和目标C:找不到“ProjectName-Swift.h”文件的有价值信息。

本文目录一览:

Swift“ Bridging-Header.h”文件不允许我实例化.swift文件中的Objective-C类(swift不支持静态库)

Swift“ Bridging-Header.h”文件不允许我实例化.swift文件中的Objective-C类(swift不支持静态库)

当X代码尝试自动创建桥接头时,它每次都会崩溃,因此我按照有关如何手动创建桥接头的说明进行操作。(创建一个.h文件,将其命名为<#PROJECT_NAME>
-Bridging-Header.h,导入所需的所有.h文件吗?)

问题是,当我尝试实例化该头文件中包含的.swift文件中的类时,什么都没有发生(它说该类不存在)。此外,在桥接头文件中,当我执行时,文件名似乎并没有自动完成尝试包括它们,使我相信某些东西无法正确链接。

有人碰到这个吗?有谁知道如何修理它?

答案1

小编典典

您需要将其添加到目标的构建设置中:

  1. 在Xcode中,如果进入目标的构建设置,然后一直向下滚动,则会发现“ Swift Compiler-Code Generation”部分。

  2. 将“ Objective-C桥接标头”设置为 <#PROJECT_NAME>-Bridging-Header.h

  3. 我不确定“ Install Objective-C Compatibility Header”的正确值,但是它是“是/否”,因此,如果一开始不起作用,您可以对其进行切换。

ios – Swift Bridging Obj和Obj-C类的可见性

ios – Swift Bridging Obj和Obj-C类的可见性

我已经在构建设置中指定了桥接头,它的完整路径,桥接头是自动创建的.在此之后,我在其中包含了我的obj-c头文件.但是每次调用对象构造函数的尝试都会失败:“使用未声明的标识符”.

我做过的事情清单:

>创建.m文件和Xcode建议创建桥接标头
>添加obj-c文件到项目并将其导入标题
>在构建设置中提供了桥接头文件的完整路径

>在代码中使用了Obj-C类型……但它没有构建.
>然后,我提供的不是标题的完整路径,而是项目所在文件夹的路径 – 没有结果.

我根据苹果文档仔细检查了所有步骤,但没有结果.
为什么?任何帮助,将不胜感激.

解决方法

跟着这些步骤:

>创建一个Swift项目
>将测试类分别添加为Cocoa Class而不是.m和.h. Xcode提示添加桥接头.
>在桥接标题中导入测试类标题,您已经这样做了.应该没有问题在Swift中实例化测试类.
>将BL_KeyChainWrapper .m和.h复制到finder中的项目目录.
>将BL_KeyChainWrapper文件拖到项目中并确保添加到目标.
>在桥接头中导入BL_KeyChainWrapper标头.
>在Swift中实例化BL_KeyChainWrapper类.

如果按照上述步骤操作,仍然有错误.您可能没有在BL_KeyChainWrapper.h中声明一个名为BL_KeyChainWrapper的类.确保在BL_KeyChainWrapper.h中,您有以下代码:

@interface BL_KeyChainWrapper : BaseClass

ios – Swift“Bridging-Header.h”文件不允许我在.swift文件中实例化目标c类

ios – Swift“Bridging-Header.h”文件不允许我在.swift文件中实例化目标c类

当X代码尝试自动创建桥接头时,每一次都会崩溃,所以我按照如何手动创建桥接头的说明进行操作。
(创建.h文件,将其命名为<#PROJECT_NAME> -Bridging-Header.h,导入所需的所有.h文件?)

问题是,当我尝试在包含在该标题中的.swift文件中实例化一个类时,没有任何事情发生(它表示该类不存在)而且,在桥接头中,当我发现我的文件名时,似乎没有自动完成我的文件名尝试包括他们,导致我相信某些事情没有正确连接。

有没有人遇到这个?有谁知道如何解决它?

解决方法

您需要将其添加到目标的构建设置中:

>在Xcode中,如果您进入目标的构建设置,并一直滚动,您将找到一个“Swift编译器 – 代码生成”部分。>将“Objective-C桥接头”设置为<#PROJECT_NAME> -Bridging-Header.h>我不知道“安装Objective-C兼容性头文件”的正确值,但它是一个yes / no,所以你可以先切换它,如果它不起作用。

ios – 我应该在我的混合Objective-C / Swift项目中使用Realm Objective-C或Realm Swift吗?

ios – 我应该在我的混合Objective-C / Swift项目中使用Realm Objective-C或Realm Swift吗?

我的项目使用 Swift并针对iOS 8.0及更新版本,但我们使用旧的Objective-C项目中的一些文件,并通过CocoaPods引入一些Objective-C库.我应该在这个项目中使用哪个Realm接口:Objective-C还是Swift?我很困惑因为Realm文档中的公告:

If you’re looking to use Realm from Objective-C,or from mixed Objective-C & Swift apps please see Realm Objective-C instead.
Using both Realm Objective-C and Realm Swift simultaneously is not supported.

解决方法

它们的关键细节是您是打算仅从Swift,还是Swift和Objective-C访问您的Realm模型类.如果您只从Swift访问它们,您可以愉快地使用Realm Swift,即使您的应用程序中的其他地方使用了使用Objective-C编写的代码.如果要从Swift和Objective-C代码访问Realm模型类,则需要使用Realm Objective-C而不是Realm Swift.

ios – 混合Swift和目标C:找不到“ProjectName-Swift.h”文件

ios – 混合Swift和目标C:找不到“ProjectName-Swift.h”文件

所以我正在研究一个包含 Swift和Objective-C类的iOS项目.

为了实例化Objective-C中描述的对象,我明白我需要一个Bridging-Header文件,其中包含我在Swift类上必须使用的所有标题的导入.它在我的项目上很好.
我做了我需要的所有课程,我在Swift中分类Objective-C类,一切都OK.

我的问题是在相反的情况下:在Objective-C文件中实例化一个swift对象.所以我读到我需要有这些选择:

>将模块定义为是
>在我正在处理的* .m文件中添加行#import“&##YourProjectName#> -Swift.h”.

这就是我做的:

我更改了Build Settings中需要更改的所有值.我添加了导入行,我甚至尝试创建头文件,但我仍然有“<#YourProjectName#> -Swift.h”文件找不到错误.

当然,我用实际的模块名称替换了YourProjectName,这是我在Build Settings的“Packaging Package”部分的“产品模块名称”下找到的.此外,项目名称中没有空格.

我忘了一步吗?

感谢您的帮助.

解决方法

确保您从.m Objective-C文件导入-Swift.h文件,而不是.h头文件. docs只谈从.m导入:

… import the Xcode-generated header file for your Swift code into any Objective-C .m file you want to use your Swift code from.

-Swift.h文件在生成期间生成,我发现从.h文件导入它总是失败,即使我知道文件存在.由于它是由构建生成的,所以我猜测当编译器通过标题进行筛选,并在.swift文件被编译后重新生成.

今天关于Swift“ Bridging-Header.h”文件不允许我实例化.swift文件中的Objective-C类swift不支持静态库的分享就到这里,希望大家有所收获,若想了解更多关于ios – Swift Bridging Obj和Obj-C类的可见性、ios – Swift“Bridging-Header.h”文件不允许我在.swift文件中实例化目标c类、ios – 我应该在我的混合Objective-C / Swift项目中使用Realm Objective-C或Realm Swift吗?、ios – 混合Swift和目标C:找不到“ProjectName-Swift.h”文件等相关知识,可以在本站进行查询。

本文标签: