当我想在目标 c 项目中使用 swift 文件时使用未声明的标识符
Posted
技术标签:
【中文标题】当我想在目标 c 项目中使用 swift 文件时使用未声明的标识符【英文标题】:Use of undeclared identifier when I want use swift file in objective c project 【发布时间】:2018-02-10 13:34:02 【问题描述】:当我想在目标 c 项目中使用 swift 文件并从 swift 类中声明一个对象时,我收到“使用未声明的标识符”错误。 我经过的方式:
在项目中处理 swift 文件并在声明 swift 类之前键入 @objc
在项目中手动创建头文件
将目标中的“Defines module”设置为Yes
将 target 中的 objective-C 桥接头 设置为 $(SRCROOT)/$(PRODUCT_MODULE_NAME)-Bridging-Header.h
在objective-c文件中声明#import "productModuleName-Bridging-Header.h"
使用 name_of_swift_class *s = [[name_of_swift_class alloc] init];
当我想在第 6 步中使用 swift 文件时,我收到“使用未声明的标识符”错误。为什么?!!!是我搞错了吗?
当我在新项目中测试此步骤时,我没有收到错误,但在我希望它返回错误的项目中。
感谢您的帮助
【问题讨论】:
在#ifdef FB_SONARKIT_ENABLED 或#if DEBUG 中放置“MyProject-Swift.h”时,您也可能会收到此错误 - 然后它在模拟器中有效,但在构建版本时无效.. 【参考方案1】:问题出在第 5 步 您不应该导入 "productModuleName-Bridging-Header.h",而应该导入 "productModuleName-Swift。 h"
P.S- 进行此更改后清理您的项目,清除您的派生数据并构建它。它会起作用的。希望对你有帮助:)
【讨论】:
以上是关于当我想在目标 c 项目中使用 swift 文件时使用未声明的标识符的主要内容,如果未能解决你的问题,请参考以下文章
如何在目标 c-swift 桥接项目中使用 intentdefinition 文件?
Swift - 如何在使用软件键盘时使 UITextField 可见? [复制]
对于使用 Swift 的目标,“Swift 语言版本”(SWIFT_VERSION)构建设置必须设置为受支持的值