【问题标题】:Swift/Obj-C bridging header not found/failed to importSwift/Obj-C 桥接头未找到/导入失败
【发布时间】:2016-09-03 11:35:09
【问题描述】:

所以我有一个 Objective-C 代码库,我正在尝试将 Swift 文件添加到其中。我创建了大部分可以工作的桥接头,但在导入某些类时遇到了问题。我在我的 Swift 文件中成功使用了我的 Project-Bridging-Header.h 中的类,并通过将 Project-Swift.h 导入到我的 Obj-c 类中成功使用了我的 Swift 类。但是,导入某些类会导致找不到文件错误。这些导致问题的类只是我创建的 obj-c 类。

我收到的错误是: 找不到“Project-Swift.h”文件,并且无法导入桥接头“path/to/header”。

我之前已经看到这些标头可以正常工作,并且成功地在目标 c 中使用了 swift 代码,反之亦然。只是当我将某些 Objective-c 类导入到我的桥接头时,它才会抱怨。

有没有人经历过这种情况或知道会发生什么?

【问题讨论】:

  • 找不到的类在哪里,您使用的导入语句是什么?
  • 我的桥接头位于 $(SRCROOT)/Project/Supporting Files/Project-Bridging-Header.h 并且自动生成 swift 标头,所以我猜 Xcode 将它放在哪里。我正在使用像 `#import "MyClass.h" 这样的导入语句,它适用于某些类,但不适用于其他类

标签: ios objective-c swift bridging-header


【解决方案1】:

我遇到了类似的问题,结果证明我有一个 cricular 参考,其中我的 Swift 类使用了我的 OjbC 类,而 OjbC 类又使用了 Swift 类。

我通过在 ObjC 标头中使用 froward 声明并在 .m 中导入 Project-Swift.h 来解决它

【讨论】:

    【解决方案2】:

    我假设您已经查看了本指南,Using Swift with Cocoa and Objective-C (Swift 2.2),否则您可能需要先看看这些指南是否对您的情况有所帮助。您可能需要仔细检查一些特殊情况,例如Referencing a Swift Class or Protocol in an Objective-C Header

    如果这不起作用,请仔细检查这些有问题的类是否设置为正确的目标。并清理并重建您的项目。

    【讨论】:

    • 感谢您的回答。这很有帮助,尽管我接受了@juhan_h 的回答,因为他更具体地回答了我的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-11
    • 2014-11-24
    • 1970-01-01
    • 1970-01-01
    • 2016-03-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多