Ios 获取错误“;“没有此类模块”;使用Xcode,但框架就在那里

Ios 获取错误“;“没有此类模块”;使用Xcode,但框架就在那里,ios,xcode,swift,Ios,Xcode,Swift,我目前正在用Swift编码,我有一个错误: 没有这样的模块 但我不明白,因为模块在我的项目中,在“链接框架和库”和“嵌入式二进制文件”中声明 框架是Objective-C的,所以我为它编写了一个桥头 请问,如何让Xcode识别框架 假设框架确实存在,并且在路径中,等等。。。删除~/Library/Developer/Xcode/DerivedData/ModuleCache目录(并清理项目并删除项目特定的派生数据,以便更好地度量) 当您执行标准清理时,ModuleCache目录不会被重建。

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

没有这样的模块

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

框架是Objective-C的,所以我为它编写了一个桥头

请问,如何让Xcode识别框架


假设框架确实存在,并且在路径中,等等。。。删除~/Library/Developer/Xcode/DerivedData/ModuleCache目录(并清理项目并删除项目特定的派生数据,以便更好地度量)


当您执行标准清理时,ModuleCache目录不会被重建。

我不知道为什么会发生这种情况,但解决问题的一种方法是进入构建设置,并定义框架搜索路径到包含有问题框架的文件夹。如果框架放在您的项目目录中,只需将框架搜索路径设置为
$(SRCROOT)
,并将其设置为递归。

好的,我如何解决相同的问题是设置相对于工作区目录的派生数据位置,而不是将其保留为默认位置。 转到xcode中的首选项。转到“首选项”中的“位置”选项卡,并将衍生数据设置为“相对”。 希望能有帮助

我不太清楚为什么评论中对这个问题的答案如此漠视:

确保您只是尝试跳过框架的导入,因为它已经添加了桥接头


希望这对周五下午或凌晨1点以后的任何时候都有帮助:


打开
xcodeproj
而不是
xcworkspace
将导致如下错误…

我发现
构建设置中的
导入路径对于自定义(MySQL)模块是错误的。在指向正确的方向后,信息就消失了。

我使用Cocoapods和Swift时也遇到了同样的问题。我没有注意到pod文件中的以下行:

# Uncomment this line if you're using Swift
# use_frameworks!
所以,我所要做的就是把它改成:

# Uncomment this line if you're using Swift
use_frameworks!

…aa而且成功了:)

几天前我也遇到了同样的错误。以下是我解决问题的方法:

错误为“未找到模块”

  • 在根项目目录中创建Podfile
  • 安装cocoapods(Swift和iOS项目的依赖关系管理器)
  • 运行吊舱安装
  • 转到项目生成设置:

    • 在Swift编译器-代码生成下查找Objective-c桥接头(如果您在此处找不到Swift编译器,可能会在项目中添加新的Swift文件)
    • 将库头文件从左侧拖放到桥接头(请参见所附图像)
  • 创建一个新的桥接头文件:例如TestProject bridgeing header.h并放在Swift编译器下→ Objective-C生成的接口头名称(参考,见上图)

  • 在TestProject bridgeing Header.h文件中,写入#import“Mixpanel/Mixpanel.h”
  • 在Swift文件中,代码应为: 导入Mixpanel(即库名称)

仅此而已。

在我的例子中,在多次尝试找出导入框架的错误之后,我最终发现框架本身就是问题所在。如果您不是从受信任的来源获取框架,您应该检查框架,并确保它包含一个模块文件夹,其中包含module.modulemap文件。如果modulemap不存在,则会出现“没有此类模块‘MyFramework’”错误


如果模块文件夹缺少“MyFramework.swiftmodule”文件夹,则会找到该框架,但Xcode不知道其内容,因此您将收到不同的错误。

我也遇到了此问题。对我来说,解决办法是两个项目之间的归档方案不匹配。我有一个带有框架项目和应用程序项目的xcworkspace。问题是,在我的应用程序的归档方案中,我使用的构建配置与框架用于归档方案的构建配置不同。我将两个构建配置都设置为Release,这解决了问题。

请将此屏幕截图与您的构建设置进行比较。 这可能会奏效。 转到框架搜索路径:

我用

目标->常规->链接的框架和库


添加应位于
工作区
文件夹顶部的框架。痛得要命。

请确保启用了“在Scheme中查找隐式依赖项”
内置选项

我也遇到了同样的错误

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

用命令

pod init
对于xcode swift项目,将生成以下POD文件

# 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。

如果您正在为tvOS这样的平台进行构建,请确保选择了Apple TV(即匹配的)模拟器


使用选定的iOS模拟器构建tvOS应用程序时,我正好遇到了这个错误。花了大半个小时寻找各种构建问题。。。doh.

当我使用
Cocoapods
添加两个框架时,我遇到了相同的错误。如果我们在项目中使用POD,我们应该使用
xcodeworkspace
而不是
xcodeproject

为了通过xcodebuild运行项目,我在
xcodebuild
命令中添加了
-workspace
参数,它工作得很好。

确保子项目中配置的命名与“父”项目的命名匹配。如果配置命名不完全匹配(区分大小写),Xcode将中止归档过程,并显示错误“没有这样的模块…”

也就是说,如果您有一个配置为
pod install
pod deintegrate
pod install
target 'Release' do
  shared_pods
end
target 'Release' do
  shared_pods
end

target 'Development' do
    shared_pods
end