在 Objective C 文件中导入 ViewController.swift
Import ViewController.swift in Objective C file
我正在尝试在我现有的 objective C 项目中使用我的新 ViewController.swift 文件。
下面是swift文件代码
import UIKit
class TutorialViewController: UIViewController{
}
下面是Objective C代码
#import "TutorialViewController-Swift.h" //"TutorialViewController-Swift.h" file not found
我无法导入 swift 代码。我已按照 this
中的所有步骤进行操作
请告诉我,我哪里出错了。是否只适用于 NSObject class.
提前致谢
您不能像那样将 swift class 直接导入到 Objective C class。默认情况下 Xcode 为此目的生成一个 swift 桥接 header。您需要导入那个 header。通常 header 文件使用以下命名约定:
<#your module name #>-Swift.h
或者您可以从目标的构建设置中获取值:
- 选择你的目标
- 转到构建设置选项卡
- 转到 Swift 编译器 - 代码生成 类别
- 检查 Objective-C 生成的接口 Header 名称
的值
- 在您的 objective-c class 中导入 header 以使用您所有的 swift classes
根据文档,当您将 Swift 代码导入 Objective-C 时,您依赖 Xcode-generated header 文件将这些文件公开给 Objective-C .这个自动生成的文件是一个 Objective-C header,它声明了目标中的 Swift 接口。它可以被认为是 Swift 代码的保护伞 header。这个header的名字是你的产品模块名后面加上"-Swift.h"
。
默认情况下,生成的 header 包含用 public 修饰符标记的 Swift 声明的接口。如果您的应用程序目标具有 Objective-C 桥接 header,它还包含标有内部修饰符的那些。标有 private 修饰符的声明不会出现在生成的 header 中。私有声明不会向 Objective-C 公开,除非它们也明确标记为 @IBAction
、@IBOutlet
或 @objc
。如果您的应用程序目标是在启用测试的情况下编译的,则单元测试目标可以访问任何带有内部修饰符的声明,就好像它们是使用 public 修饰符声明的一样,方法是在产品模块导入语句前加上 @testable。
您无需执行任何特殊操作即可创建生成的 header 文件——只需将其导入即可在您的 Objective-C 代码中使用其内容。请注意,生成的 header 中的 Swift 接口包含对其中使用的所有 Objective-C 类型的引用。如果您在 Swift 代码中使用自己的 Objective-C 类型,请确保在导入 Swift 生成的 header 到 Objective-C .m 文件中,您要从中访问 Swift 代码。
有关详细信息,请关注此 Importing Swift into Objective-C
我正在尝试在我现有的 objective C 项目中使用我的新 ViewController.swift 文件。
下面是swift文件代码
import UIKit
class TutorialViewController: UIViewController{
}
下面是Objective C代码
#import "TutorialViewController-Swift.h" //"TutorialViewController-Swift.h" file not found
我无法导入 swift 代码。我已按照 this
中的所有步骤进行操作请告诉我,我哪里出错了。是否只适用于 NSObject class.
提前致谢
您不能像那样将 swift class 直接导入到 Objective C class。默认情况下 Xcode 为此目的生成一个 swift 桥接 header。您需要导入那个 header。通常 header 文件使用以下命名约定:
<#your module name #>-Swift.h
或者您可以从目标的构建设置中获取值:
- 选择你的目标
- 转到构建设置选项卡
- 转到 Swift 编译器 - 代码生成 类别
- 检查 Objective-C 生成的接口 Header 名称 的值
- 在您的 objective-c class 中导入 header 以使用您所有的 swift classes
根据文档,当您将 Swift 代码导入 Objective-C 时,您依赖 Xcode-generated header 文件将这些文件公开给 Objective-C .这个自动生成的文件是一个 Objective-C header,它声明了目标中的 Swift 接口。它可以被认为是 Swift 代码的保护伞 header。这个header的名字是你的产品模块名后面加上"-Swift.h"
。
默认情况下,生成的 header 包含用 public 修饰符标记的 Swift 声明的接口。如果您的应用程序目标具有 Objective-C 桥接 header,它还包含标有内部修饰符的那些。标有 private 修饰符的声明不会出现在生成的 header 中。私有声明不会向 Objective-C 公开,除非它们也明确标记为 @IBAction
、@IBOutlet
或 @objc
。如果您的应用程序目标是在启用测试的情况下编译的,则单元测试目标可以访问任何带有内部修饰符的声明,就好像它们是使用 public 修饰符声明的一样,方法是在产品模块导入语句前加上 @testable。
您无需执行任何特殊操作即可创建生成的 header 文件——只需将其导入即可在您的 Objective-C 代码中使用其内容。请注意,生成的 header 中的 Swift 接口包含对其中使用的所有 Objective-C 类型的引用。如果您在 Swift 代码中使用自己的 Objective-C 类型,请确保在导入 Swift 生成的 header 到 Objective-C .m 文件中,您要从中访问 Swift 代码。
有关详细信息,请关注此 Importing Swift into Objective-C