iOS Swift 项目中,有一个 Objective-C 文件,我想将一个 Swift 类导入到这个 Objective-C 文件中。

9 浏览
0 Comments

iOS Swift 项目中,有一个 Objective-C 文件,我想将一个 Swift 类导入到这个 Objective-C 文件中。

我用Swift编写了一个库,但是无法将其导入到我用Objective-C编写的当前项目中。\n有什么方法可以导入它吗?\n#import \"SCLAlertView.swift\" - 找不到\'SCLAlertView.swift\'文件\n

0
0 Comments

问题的原因是,在iOS Swift项目中,如果想要在Objective-C文件中导入一个Swift类,需要遵循一定的步骤和规则。根据苹果官方网站的说明,首先需要在项目的Build Settings中,设置Defines Module选项为Yes,以便将Swift代码导入到Objective-C中。然后,在Objective-C的.m文件中使用#import "ProductName-Swift.h"语句来导入Swift代码,其中ProductName需要替换为实际的产品名称。

此外,需要注意的是,只能在.m文件中导入"ProductName-Swift.h",而不能在.h文件中导入。这是为了避免循环引用的问题。如果想要在Objective-C的.h文件中使用Swift类,可以使用前向声明的方式来声明Swift类,但是无法在Objective-C中继承Swift类。

在导入Swift代码时,还需要注意一些细节。根据开发者的经验,有时候只在.pch文件中导入"ProductName-Swift.h"会出现错误,需要在.m文件中也进行导入。另外,如果想要导入Swift扩展(extension),也可以使用"ProductName-Swift.h"来导入。

此外,还有一些开发者提到的问题和解决方法。比如,有开发者在使用UIView的Swift类时无法导入到Objective-C中,有开发者在xcode 8.3.2版本中无法使用"ProductName-Swift.h"导入Swift类,有开发者在命名以数字开头的项目中遇到模块名称被修改的问题,还有开发者询问是否可以在Objective-C中继承Swift的结构体。

总结起来,要在Objective-C文件中导入Swift类,需要设置Defines Module选项为Yes,并在.m文件中使用#import "ProductName-Swift.h"语句来导入Swift代码。此外,还需要避免在.h文件中导入Swift代码,无法在Objective-C中继承Swift类,可以使用前向声明的方式来声明Swift类。在实际应用中,还需要注意一些细节和可能遇到的问题。

0
0 Comments

问题出现的原因是在一个Objective-C的项目中,想要在Objective-C文件中导入一个Swift类。解决方法如下:

1. 在Objective-C中创建一个新的项目。

2. 创建一个新的.swift文件。

- 弹出一个窗口询问“Would You like to configure an Objective-C bridging Header”。

- 选择“Yes”。

3. 点击Xcode项目文件。

4. 点击“Build Settings”。

5. 在搜索栏中搜索“Defines Module”。

6. 将值改为“Yes”。

7. 搜索“Product Module Name”。

8. 将值改为项目的名称。

9. 在AppDelegate中添加以下代码:#import "YourProjectName-Swift.h"。

注意:每当想要使用Swift文件时,必须导入以下代码:#import "YourProjectName-Swift.h"。将“Defines module”在“Build settings”中的值改为“Yes”是解决问题的关键。Embedded Content Contains Swift : YES也可以使用。在Xcode 7.3.1及更高版本中,不需要执行步骤7和8。这个方法适用于我!谢谢!在我的情况下,我跳过了第6步,但它仍然有效。这一步真的需要吗?我的“Defines module”被设置为NO。在Xcode 8.3.2中对我无效,在之前的版本中有效。请告诉我你遵循的步骤,因为对于相同的Xcode版本,同样的步骤对我有效。只想补充一点,#import "YourProjectName-Swift.h"中的“YourProjectName”将是第8步中设置的项目名称。如果你的项目名称包含特殊字符,并且你不确定应该如何格式化它,这将非常有用。这完全没有回答OP的问题。

0
0 Comments

在iOS Swift项目中,如果想要在Objective-C文件中导入一个Swift类,需要进行以下操作:

1. 首先,需要导入ProductName-Swift.h文件。注意,这里的ProductName是指产品名称,而不是类名。这是一个自动生成的头文件,定义了项目中所有用@objc注解或继承自NSObject的Swift类的Objective-C接口。

2. 需要注意以下几点:

- 如果产品名称中包含空格,需要用下划线替换(例如My Project变为My_Project-Swift.h)。

- 如果目标是一个框架(framework),需要导入<ProductName/ProductName-Swift.h>

- 确保Swift文件是目标的成员。

3. 如果在导入时使用了Swift文件的文件名,会出现错误"Expected ';' after top level declarator",这是因为在Swift文件的"import Foundation"语句之后。

4. 如果想要查看项目名称,可以根据以下步骤进行操作:

- 首先,确保项目模块名已定义。

- 可以在项目的Build Settings中搜索关键词Objective-C Generated Interface Header Name来找到正确的生成的头文件名。

总结起来,导入Swift类到Objective-C文件中的方法如下:

- 导入ProductName-Swift.h文件。

- 确保Swift文件是目标的成员。

- 根据项目名称或产品名称来导入头文件。

- 在框架(framework)目标中,需要使用<ProductName/ProductName-Swift.h>的形式来导入。

以上是关于在iOS Swift项目中将Swift类导入Objective-C文件的原因和解决方法的整理。

0