【问题标题】:Use of undeclared identifier when I want use swift file in objective c project当我想在目标 c 项目中使用 swift 文件时使用未声明的标识符
【发布时间】:2018-02-10 13:34:02
【问题描述】:

当我想在目标 c 项目中使用 swift 文件并从 swift 类中声明一个对象时,我收到“使用未声明的标识符”错误。 我经过的方式:

  1. 在项目中处理 swift 文件并在声明 swift 类之前键入 @objc

  2. 在项目中手动创建头文件

  3. 将目标中的“Defines module”设置为Yes

  4. target 中的 objective-C 桥接头 设置为 $(SRCROOT)/$(PRODUCT_MODULE_NAME)-Bridging-Header.h

  5. 在objective-c文件中声明#import "productModuleName-Bridging-Header.h"

  6. 使用 name_of_swift_class *s = [[name_of_swift_class alloc] init];

当我想在第 6 步中使用 swift 文件时,我收到“使用未声明的标识符”错误。为什么?!!!是我搞错了吗?

当我在新项目中测试此步骤时,我没有收到错误,但在我希望它返回错误的项目中。

感谢您的帮助

【问题讨论】:

  • 在#ifdef FB_SONARKIT_ENABLED 或#if DEBUG 中放置“MyProject-Swift.h”时,您也可能会收到此错误 - 然后它在模拟器中有效,但在构建版本时无效..

标签: ios objective-c swift bridging-header objc-bridging-header


【解决方案1】:

问题出在第 5 步 您不应该导入 "productModuleName-Bridging-Header.h",而应该导入 "productModuleName-Swift。 h"

P.S- 进行此更改后清理您的项目,清除您的派生数据并构建它。它会起作用的。希望对你有帮助:)

【讨论】:

    猜你喜欢
    • 2012-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多