我目前在Swift编码,我有一个错误:

没有这样的模块

但我不明白,因为这个模块在我的项目中,在“链接框架和库”和“嵌入式二进制文件”中声明。

框架是在Objective-C中,所以我为它写了一个桥标头。

请问,如何让Xcode识别框架?


当前回答

我赢得了“没有这样的模块”错误的最愚蠢原因奖。在我的例子中,我手工构建了包含的框架,并将其复制到我的项目目录中。我的框架搜索路径设置正确,框架也被正确地添加到项目中。

当我归档我正在构建的框架时,我使用“Show in Finder”将我带到派生数据中的发布文件夹。但是我没有注意到这个文件夹只包含框架的别名,而不是框架本身。原始框架仍然在我的派生数据目录中,所以后来当我清除派生数据时,框架被删除了,但我的项目不知道这一点。

重新归档框架,遵循别名到实际框架,并将其复制到我的项目目录中,这是可行的。

其他回答

对我来说,我修复了它替换任何波浪号(~)字符在我的自定义路径$(HOME)。自定义路径位于Xcode首选项的位置选项卡下。

我得到了相同的错误

import Firebase

但随后注意到,我没有将pod添加到主目标部分,而只是在Podfile中添加到Test和TestUI目标。

用命令

pod init

对于xcode swift项目,会生成以下Podfile

# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'

target 'MyApp' do
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
  use_frameworks!

  # Pods for MyApp

  target 'MyAppTests' do
    inherit! :search_paths
    # Pods for testing
  end

  target 'MyAppUITests' do
    inherit! :search_paths
    # Pods for testing
  end

end

因此,需要确保将pod添加到任何适当的占位符。

没想到这竟然起作用了。我的解决办法是……

构建设置->框架搜索路径->高亮调试->按delete ->它应该自动填写一个路径。->释放时执行同样的操作

结果:

在我的例子中,应用IPHONEOS_DEPLOYMENT_TARGET被设置为9.3,而在我新创建的框架中,它被设置为10.2

隐式依赖解析器忽略了我的新框架,因为目标平台的要求高于应用程序的要求。

在调整框架iOS部署目标以匹配我的应用程序部署目标后,框架编译并链接成功。

有时豆荚分解,然后豆荚安装也帮助我。