Swift. 无法构建目标为Objective-C的模块'Alamofire'。

129

使用XCode6并且按照说明书安装Alamofire新版本的子模块,但是似乎有些问题。我收到的错误信息是"Could not build objective-c module "alamofire" on import alamofire。这里是我接收到的错误截图:

enter image description here 这是我的配置:

enter image description here


https://dev59.com/z4Tba4cB1Zd3GeqP630l#26504552 - Saurabh Prajapati
我认为您需要按照此处给出的说明安装Alamofire https://github.com/Alamofire/Alamofire。 - Saurabh Prajapati
你搞定了吗?对我来说它起作用了,但在另一个“构建和运行”之后它停止了,我得到了相同的错误信息... :( - Georg
2
一位同事刚刚遇到了相同的错误信息,但原因是他仍在使用Xcode 6.1(我撰写本文时已经是6.3时代了)。这只是为了记录,如果其他人也遇到同样的问题,可以知道原因。 - villapossu
12个回答

118

当出现这种情况时,先单独构建框架。在您的情况下:

  • 将方案更改为Alamofire
  • 进行构建(⌘B
  • 切换回您的方案
  • 运行

4
好的回答;我之前没有意识到更改构建方案可以解决这些错误! - tehprofessor
7
如果你必须单独构建方案,那可能意味着你没有将该框架设置为应用程序构建设置中的目标依赖项。 执行此操作后,就不需要手动构建它了。 - Charles A.
我投了一票,因为它在Xcode中可以工作。不幸的是,如果从命令行构建或者构建发布版本,它将无法工作。 - Eneko Alonso
这解决了我在GoogleApiClient/Drive上遇到的问题。编译可以成功,但只要对文件进行任何更改,Xcode就会抱怨导入错误。 - Nick Alexander
1
非常感谢您,这对我帮助很大。 - Ridho Octanio

57

进入Developer/Xcode/DerivedData目录并删除你的框架文件夹。(或者直接删除DerivedData文件夹)

如果你有一个在运行中的模拟器中的应用程序构建,则需要在那里删除该应用程序。

然后进行清理和构建操作。


这对我也有效,但后来我遇到了多个命令生成的问题,这个链接会有帮助:https://dev59.com/pVUL5IYBdhLWcg3wM1g6。 - Bhimbim

35

以下方法一直对我有效:

  1. 退出Xcode
  2. 删除~/Library/Developer/Xcode/DerivedData
  3. 切换到你的框架方案并进行构建⌘B
  4. 切换到你的应用程序方案并进行构建⌘B

24

删除 DerivedData 文件夹并清理并构建项目,解决了我的这个问题。


15

如果您在尝试导入动态框架时出现此错误,请确保该框架已包含在目标的目标依赖项中。

项目 > "目标" > 构建阶段 > 目标依赖项


另外,如果您正在使用在同一工作区中开发的另一个框架,请确保将该项目添加为链接库,而不是框架文件,否则该框架将无法作为目标依赖项显示。 - Dávid Pásztor

15
按照以下顺序尝试,其中一种方法可能有效。
  1. Cmd+B - 构建workspace,可能会构建所需的目标或模块。

  2. Cmd+K,然后 Cmd+B - 清除并构建

  3. Cmd+Shift+Option+KCmd+B - 清理构建文件夹

  4. 退出Xcode,删除派生数据,启动Xcode,然后按 Cmd+Shift+Option+K 再按 Cmd+B

这恰好是从Xcode中清理派生数据和其他缓存的最干净的方法。


对于那些使用iCloud同步的人(例如,将项目放在文档文件夹中以便轻松同步到多台Mac电脑),请检查名为“XXX 2.swift”的文件。搜索并删除所有这些文件,然后运行“pod install”。 - John Pang

11

我使用了Build clean,它对我很有效。

  1. 针对Alamo执行Build clean
  2. 针对HTTPDemo执行Build clean

10

将导入语句和使用它的所有代码注释掉,构建并运行代码,然后再取消注释。 这对我起作用了...


2
任何构建失败的pod都可能导致这个错误,(在我的情况下,一个使用过时语法的旧的pod构建失败了)。
您可以尝试使用pod update来更新您的pods到最新版本,看看情况如何。
"最初的回答"

对于那些使用iCloud同步的开发者(例如,将项目放在Documents文件夹中以便轻松同步到多台Mac电脑),请检查文件名为“XXX 2.swift”的文件,并删除所有这样的文件,然后运行"pod install"。 - John Pang
这对我很有帮助。我有一个仍在开发中的过时pod,我只是忘记运行pod install了。 - atereshkov

1

我在我的Objective-C / Swift混合项目中解决了这个问题。

在您的Objective-C桥接文件中,添加以下行:

#import <Alamofire/Alamofire.h>


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接