【问题标题】:Use swift code in objective C file in swift based project在基于 swift 的项目中使用目标 C 文件中的 swift 代码
【发布时间】:2016-12-12 13:22:22
【问题描述】:

关于如何使用swift code in objective c 有很多问题。我有基于 swift 的项目。有我需要使用 swift 代码的 Objectice C 文件。

Xcode 没有自动创建ProjectName-Swift.h。所以我手动创建并检查以下内容。

  1. 生成的接口头名称:ProjectName-Swift.h

  2. 产品模块名称:myproject

  3. 定义模块:YES

  4. 嵌入内容包含 Swift:YES

  5. 安装 Objective-C 兼容性头文件:YES

  6. 在swift类中添加@objc

导入 UIKit 导入 SwiftyJSON

@objc 类用户:NSObject、NSCoding { }

然后 Import ProjectName-Swift.h 在目标 c 文件中。但给出错误Unknown Type name User

我曾尝试添加 @class User 它给出错误forward reference using @class

我该如何解决这个错误

【问题讨论】:

  • 有两个标题。你把他们弄糊涂了。您不能手动创建生成的接口标头。它不是项目的一部分。
  • @matt 你能解释一下吗?我还是一头雾水
  • @SunnyShah,Apple 已经解释了很简单的方法,请仔细阅读 - developer.apple.com/library/ios/documentation/Swift/Conceptual/…
  • @SunnyShah 你是如何解决这个问题的?您在哪里找到导入 swift 类的文件?
  • 在#ifdef FB_SONARKIT_ENABLED 或#if DEBUG 中放置“MyProject-Swift.h”时,您也可能会收到此错误 - 然后它在模拟器中有效,但在构建版本时无效。

标签: ios objective-c swift


【解决方案1】:

希望您在阅读@AnupamMishra 引用的文档后已经解决了问题,但以防万一:尝试从项目中删除您手动创建的ProjectName-Swift.h 文件。它隐藏了由 Xcode 自动生成且未在您的项目中列出的同名文件。该文件仍然存在,位于 DerivedData 目录的深处。

另一个观察:您不必在Build Settings 中设置Objective-c Generated Interface Header Name。默认情况下,Xcode 会生成一个并将其命名为myproject-Swift.h,因为myproject 是您的Product Module Name

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-13
    • 2016-05-27
    相关资源
    最近更新 更多