我目前正在使用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
,那么我的问题就解决了。
对我而言仅构建主动架构,对于所选配置,将“设置为“是”。这达到了目的:
从左侧的项目导航器中选择“窗格”>选择“构建设置”>仅将活动体系结构构建为否
如果以上所有方法都不适合您,例如我的情况。前一天没有问题,但第二天早上我遇到了同样的错误。我只是通过删除引用来删除框架,然后再次添加它们。我知道这听起来很愚蠢,但是瞧瞧它奏效了。