我目前正在使用Swift进行编码,但出现错误:
没有这样的模块社交
但是我不明白,因为该模块在我的项目中,在“链接的框架和库”和“嵌入式二进制文件”中声明。
这些框架位于Objective-C中,因此我为此编写了一个桥头。
请,如何使Xcode识别框架?




#import "Social/Social.h"
platform :ios, '10.0'。那是解决方案。
我目前正在使用Swift进行编码,但出现错误:
没有这样的模块社交
但是我不明白,因为该模块在我的项目中,在“链接的框架和库”和“嵌入式二进制文件”中声明。
这些框架位于Objective-C中,因此我为此编写了一个桥头。
请,如何使Xcode识别框架?




#import "Social/Social.h"
platform :ios, '10.0'。那是解决方案。
Answers:
我不确定为什么会发生这种情况,但是解决您的问题的一种方法是进入构建设置,然后将Framework Search Paths定义到包含相关框架的文件夹中。如果将框架放置在项目目录中,只需将框架搜索路径$(SRCROOT)设置为并将其设置为递归。
Project Build Settings而不是Target Build Settings。
如果是星期五下午或凌晨1点之后的任何时间:
打开xcodeproj而不是xcworkspace将导致这样的错误...
确保子项目中的配置命名与“父”项目的命名匹配。如果配置命名不完全匹配(区分大小写),则Xcode将中止存档过程并显示错误“ No such module ...”。
也就是说,如果您的“父”项目的配置名为“ AppStore”,则必须确保所有子项目也都具有此配置名称。
查看我所附的屏幕截图。
Debug,Distribution其父项目正在尝试为其构建Release。解决方案是Distribution在子项目中制作一个副本并重命名该副本Release。
以下步骤对我有用。
"pod update"在终端中.xcworkspace并再次构建。pod install它行不通了。
就我而言,在尝试找出我在导入框架时做错了什么之后,我最终发现框架本身就是问题所在。如果您不是从受信任的来源获得框架,则应检查框架并确保其包含一个Modules文件夹,其中包含module.modulemap文件。如果不存在module.modulemap,您将收到“ No such module'MyFramework'”错误。
如果Modules文件夹中缺少“ MyFramework.swiftmodule”文件夹,则将找到该框架,但是Xcode不会知道其内容,因此您将得到不同的错误。
假设Framework确实存在并且在路径中,依此类推...删除〜/ Library / Developer / Xcode / DerivedData / ModuleCache目录(并清理项目并删除项目特定的派生数据,以备不时之需)。
当您执行标准清理时,不会重建ModuleCache目录。
几天前我也遇到了同样的错误。这是我解决问题的方法:
错误是“找不到模块”
转到项目构建设置:
创建一个新的桥接头文件:例如TestProject-Bridging-Header.h并将其放在Swift Compiler→Objective-C生成的接口头名称下(请参见上图)
就这样。
好的,对我来说,解决同一问题的方法是设置相对于工作区目录的派生数据位置,而不是将其保留为默认值。转到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添加到任何适当的占位符。
在我的情况下,将应用程序IPHONEOS_DEPLOYMENT_TARGET设置为9.3,而在我新创建的框架中将其设置为10.2。
隐式依赖解析器忽略了我的新框架,因为目标平台的要求高于应用程序的要求。
调整框架iOS部署目标使其与我的应用程序部署目标匹配后,框架便成功编译和链接。
我刚刚删除了我的cocoapod。然后,我安装了一个pod来删除它。然后,我将其重新添加到podfile中并重新安装。这使它起作用。不知道为什么。
在Xcode 10.1中,我的解决方案是在“文件”菜单中的“ 工作区设置”上更改构建系统。默认情况下,将其设置为New Build System,将其更改为Legacy Build System,并且成功了。
这个问题可能会导致几种潜在的错误配置,
.xcworkspace但尚未打开.xcodeproj文件。还要确保在构建Social之前先构建TriviaApp。TriviaApp部署目标设置为9.0,Social也需要将部署目标设置为9.0。TriviaApp)和使用的框架(Social)具有相同的配置集。即如果你的项目有三种配置,Debug,Release,ReleasePremium比你的社会框架,还需要有三种配置Debug,Release,ReleasePremium。还要确保为TriviaApp和设置存档配置Social。即,如果您TriviaApp的存档方案设置为ReleasePremium,则您Social的存档方案也需要设置为ReleasePremium。Social在.swift文件中已添加文件时不需要导入每个文件。Bridging-Header.h。#use_frameworks!变成use_frameworks!由你Podfile。如果有时重新安装pod可以正常工作Social有对Pod的依赖, Pod。如果您使用的是迦太基,那么构建环境中的框架通常会保留在
$(PROJECT_DIR)/Carthage/Build/iOS
如果运行carthage update --platform ios --no-build(以节省时间),将不会重新创建Build文件夹中的文件,因此XCode将无法使用这些模块。
就我而言,我已经跑步了carthage update --platform ios,那么我的问题就解决了。
对我而言仅构建主动架构,对于所选配置,将“设置为“是”。这达到了目的:
从左侧的项目导航器中选择“窗格”>选择“构建设置”>仅将活动体系结构构建为否
如果以上所有方法都不适合您,例如我的情况。前一天没有问题,但第二天早上我遇到了同样的错误。我只是通过删除引用来删除框架,然后再次添加它们。我知道这听起来很愚蠢,但是瞧瞧它奏效了。