获取错误“没有这样的模块”使用Xcode,但框架在那里

我目前正在使用Swift进行编码,并且出现错误:

没有这样的模块社会

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

这个框架在Objective-C中,所以我为它写了一个Bridge Header。

请问,我怎样才能让Xcode识别框架?

错误模块

项目

链接框架,图书馆

标题桥

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

如果是周五下午或凌晨1点以后:

打开xcodeproj而不是xcworkspace会导致这样的错误…

我不太清楚为什么马丁R在这个问题的评论中的回答是如此无视:

确保你试图简单地跳过框架的导入,因为它已经被添加了桥接头

希望这可以帮助

我有使用Cocoapods和Swift的相同的问题。 我没有注意到Podfile中的以下几行:

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

所以,我所要做的就是把它改成:

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

… aaand它的工作:)

请将此截图与您的构build设置进行比较。 这可能会工作。 转到框架searchpath:

在这里输入图像说明

我也遇到了这个问题。 对我来说修复是两个项目之间的归档scheme不匹配。 我有一个框架项目和一个应用程序项目的xcworkspace。 问题是,在我的应用程序的存档scheme,我正在使用一个不同的构buildconfiguration比框架使用它的存档scheme。 我将这两个版本configuration设置为发布,并解决了这个问题。

假设框架确实存在于path中,等等…删除〜/ Library / Developer / Xcode / DerivedData / ModuleCache目录(并清理项目并删除项目特定的派生数据以获得更好的效果)。

当您执行标准清理时,M​​oduleCache目录不会被重build。

好的,我解决同样的问题的方法是设置相对于工作区目录的派生数据位置,而不是保持默认。 转到xcode的首选项。 转到首选项中的位置选项卡,并将派生数据设置为相对。 希望能帮助到你。

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

错误是“找不到模块”

  • 在您的根项目目录中创buildPodfile
  • 安装cocoapods(Swift和iOS项目的依赖pipe理器)
  • 运行pod安装
  • 转到项目构build设置:

    • 在Swift编译器下查找Objective-c桥接头 – 代码生成(如果你没有在这里findSwift编译器,可能会在项目中添加一个新的Swift文件)
    • 将库头文件从左侧拖放到桥头(请参见附图) 在这里输入图像说明
  • 创build一个新的桥接头文件:例如TestProject-Bridging-Header.h并放在Swift编译器下→Objective-C生成的接口头名称(参见上图)

  • 在TestProject-Bridging-Header.h文件中,写入#import“Mixpanel / Mixpanel.h”
  • 在你的Swift文件中,代码应该是:导入Mixpanel(即库的名称)

就这样。

就我而言,经过多次尝试弄清楚我在做什么错误的input框架之后,我最终发现框架本身就是问题所在。 如果你没有从一个可信的源代码获取你的框架,你应该检查这个框架,并确保它包含一个带有一个module.modulemap文件的Modules文件夹。 如果module.modulemap不存在,你会得到“No such module'MyFramework'”的错误。

示例显示了SwiftyJSON.framework的目录结构

如果Modules文件夹缺less“MyFramework.swiftmodule”文件夹,那么框架将被find,但Xcode不会知道它的内容,所以你会得到不同的错误。

请确保,在Scheme中的Build选项中Find implicit Dependencies

我得到同样的错误

 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 

所以,需要确保一个人添加豆荚到任何适当的占位符。

如果您正在为像tvOS这样的平台构build,请确保您select了Apple TV(即匹配)模拟器。

select一个iOS模拟器构build一个tvOS应用程序给了我这个错误。 花了一个小时寻找各种build设问题的好一段时间…呃。

我遇到了同样的错误,因为我添加了几个使用Cocoapods的框架。 如果我们在项目中使用xcodeworkspace ,我们应该使用xcodeworkspace而不是xcodeproject 。 要通过xcodebuild运行项目,我在xcodebuild命令中添加了-workspace <workspacename>参数,并且工作完美。

我发现在Build Settings中的Import Paths对于自定义(MySQL)模块是错误的。 在指出正确的方向后,消息消失了。

我解决这个问题

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

添加应该在Workspace文件夹顶部的框架。 疼痛的屁股。

我开发一个自定义Pod时遇到了这个问题。 发现我只需要在我的Procfile中指定依赖项:

 Pod::Spec.new do |s| # ... other declarations s.dependency 'Alamofire', '~> 4.3' end 

如果以上所有的方法都不适合你的情况。 前一天没有问题,但在第二天早上我面临同样的错误。 我通过删除引用删除了框架,并再次添加它们。 我知道这可能听起来很愚蠢,但它工作。

我在加载FacebookSDK时遇到类似的问题,我在编译设置中添加了〜/ Documents / FacebookSDK (search框架的位置)到Frameworksearchpath ,之后我可以导入FBSDKShareKit模块

对于什么是值得的(我是新来的这个使用Xcode 7.2 / Swift 2),但我注意到,只有在项目目录库中的.swift文件自动给你访问它,并不需要using语句。

例如:我正在使用SwiftyJSON,只需要项目中的SwiftyJSON.swift文件就是我所需要的。 using声明实际上给了我'没有这样的模块'的错误,并把它解决了,它工作正常。

如果你已经完成了上面的所有工作,但仍然没有为你工作,然后尝试在目标的构build设置的Frameworksearchpath中添加$(inherited)

对我来说这发生在RxSwift,问题是我已经修复它在Podfile 3.0.0。 删除版本限制和更新豆荚升级到3.1.0固定它。

我的解决scheme是。 在目标内部 – >构build设置 – >框架searchpath并添加$(inheritance)。 但是,如果它是一个cocoapods你的答案可能在terminal输出。

只是为了完成另一种可能性,当select“Find Implicit Dependencies”选项未选中时,可能会发生此错误。 转到编辑计划 – >生成。

在这里输入图像说明

然后检查这个选项。

在这里输入图像说明

这个错误也可能是由于缺less模块映射的框架造成的。 如果您正在尝试导入的框架是您的,请检查框架本身的编译器警告。 在我的情况下,我的框架正在build设,但有一个build立警告:

警告:没有为目标“MyFramework”find伞标题,模块映射将不会生成

通过解决这个警告( 与框架头部不匹配模块名称有关 ),我能够导入框架。

在您的项目Podfile中,您必须取消注释use_frameworks!platform :ios, '9.0'

就我而言,我只是不得不重新加载项目。 我曾经使用命令行克隆我的项目,但没有正确安装子模块。 为了补救,我通过XCode克隆了项目,一切正常。 只要确保先备份任何更改即可。

1 – 在您的pod文件中,删除创build问题的pod,并保存文件2 – 运行pod install 3 – 重新添加pod,保存文件4 – 重新运行pod install

问题应该解决。

HIH

确保子项目中的configuration命名与“父”项目的名称相匹配。 如果configuration命名不完全匹配(区分大小写),Xcode将中止归档进程并显示错误“No such module …”

也就是说,如果您有名为“AppStore”的configuration的“父项目”,则必须确保所有子项目都具有此configuration名称。

看我附上的截图。

“父”项目中的配置设置

第一个子项目中的配置设置

第二个子项目中的配置设置

我得到这个问题,因为我在podfile(项目本身,而不是UITests部分)中设置了错误的目标。