【问题标题】:ObjC Header-Only Import in Swift: No Such Module errorSwift 中的 ObjC 标头仅导入:没有此类模块错误
【发布时间】:2017-11-05 23:25:52
【问题描述】:

我已经将一个应用项目从 ObjC 转换为 Swift。它使用了几个由 Cocoa Pods 管理的 ObjC 框架。

当我尝试构建它时出现错误:

没有这样的模块'Foo'

Foo 文件是一个没有 .m 文件的 ObjC 头文件。它用于将几个其他类绑定到一个导入中(在 ObjC 中)。这是 Foo.h 的外观:

#import <Foo/FooDefines.h>
#import <Foo/FooToken.h>
#import <Foo/FooAccount.h>
#import <Foo/FooAccountPersistenceInformation.h>
#import <Foo/FooAccountUserInformation.h>
#import <Foo/FooSettings.h>

// Authenticators
#import <Foo/FooAuthenticator.h>
#import <Foo/FooAnonymousAuthenticator.h>
#import <Foo/FooUserPasswordAuthenticator.h>

// UI
#import <Foo/FooViewController.h>
#import <Foo/RLoginDialog.h>
#import <Foo/RLogoutDialog.h>
#import <Foo/RAccountSelectionDialog.h>
#import <Foo/RVerificationDialog.h>
#import <Foo/RBuiltinLogoutActionSheet.h>

// Workflows
#import <Foo/RLoginWorkflow.h>
#import <Foo/RVerificationWorkflow.h>
#import <Foo/RLogoutWorkflow.h>

我如何能够在 Swift 类中成功导入它以克服编译时错误?

【问题讨论】:

  • 您应该将类​​添加到“桥接头”中
  • 将所有 Objective-C .h 文件导入添加到“$(PROJECT_NAME)-Bridging-Header.h”文件中。请参阅此stackoverflow.com/questions/26096402/… 了解更多信息
  • @suhit 嗯,我已将 #import &lt;Foo/Foo.h&gt; 添加到桥接头文件中,但仍然出现相同的错误(清理后)。
  • 你能把 文件中的所有导入添加到 Bridging-Header 文件中并尝试

标签: ios objective-c swift xcode cocoapods


【解决方案1】:

尝试使用#import &lt;Foo/Foo.h&gt;#import "Foo.h"

【讨论】:

  • 请确认您是否在桥接头中使用了这个并且每次都清理过项目。
  • 已确认但无法正常工作!附带问题:我是否需要使用 use_frameworks!在我的 Swift 目标的 pod 文件中?使用pod install 时我也会收到警告:[!] Podfile 包含框架目标,而 Podfile 不包含主机目标(嵌入框架的目标)。如果这个项目是做框架开发的,你可以忽略这个消息。否则,将目标添加到嵌入这些框架的 Podfile 以使此消息消失(例如测试目标)。
  • 另一个奇怪的地方:除了 Xcode,我还在使用 AppCode,在 AppCode 中,我可以 CMD 单击代码中未导入的类,然后跳转到它们。但是没有找到导入。
  • 是的,您需要使用“use_frameworks!”在 podfile 中用于 swift 目标。抱歉,我还没有尝试过 AppCode。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-01
  • 2017-04-07
  • 2023-02-15
  • 2023-04-08
相关资源
最近更新 更多