获取错误“没有这样的模块”使用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目录(并清理项目并删除项目特定的派生数据以获得更好的效果)。
当您执行标准清理时,ModuleCache目录不会被重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'”的错误。
如果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部分)中设置了错误的目标。