我收到以下错误:
MyClass 不可用:找不到此类的 Swift 声明
但我只有在 Xcode 中进行发布构建时才得到它......调试工作正常。
有人知道怎么回事吗?我正在运行 6.3<</p>
如果 MyClass 位于动态框架(Cocoa Touch Framework)中,则很可能您使用了具有错误架构的构建。要进行检查,请在查找器中浏览您的MyClass.framework,然后选中Modules/AirServiceKit.swiftmodule
。应该有类似 x86_64.swiftmodule
或 arm64.swiftmodule
的东西,如果你使用的是模拟器,应该有 x86,或者如果你正在为设备构建,应该有 arm。
如果其他人遇到此问题:
我遇到了完全相同的错误,结果证明我已经为特定的模拟器构建了框架。我将device
(左上角)更改为Generic iOS device
并做了一个clean
和build
,然后我使用了生成的.framework
文件。使用此生成的.framework
文件后,一切正常。
就我而言,这是因为我正在开发的框架缺少我的应用程序目标中列出的有效架构之一。我所要做的就是:
- 转到项目文件。
- 转到尝试生成的应用目标的"生成设置"。请注意"有效体系结构"下列出的体系结构。
- 转到失败的框架目标。
- 确保所有体系结构都匹配。
就我而言,我的框架缺少arm64
.
检查您在调试和发布的构建设置中为"仅构建活动体系结构"设置的标志值
我遇到了同样的问题,我通过执行以下步骤解决了它
- 删除 SWIFT 框架,
即将 SWIFT 框架移至垃圾箱
然后清理当前项目
再次构建 SWIFT 框架
将 swift 框架拖放到应用程序主目录中
将框架添加到嵌入式框架
)然后运行项目
它就像一个魅力.你的 swift 框架类得到在应用中得到认可。
我有不同的答案,我相信它会帮助很多人。
您的应用项目链接到早期的 iOS 版本(如 iOS 9.0),并且 您的框架链接到较新的(如iOS 11.3)
只需将您的框架版本更改为iOS 9.0,干净(如果您的框架使用 Pod 依赖项,可以选择运行pod install
),建并将框架文件添加到应用项目中,添加到链接的二进制文件,您已经完成了=]
导致这种情况的原因之一是iOS 11支持64位 只有(ARM64),所以框架只得到那个架构,但是 您的应用程序也需要缺少 32 种架构。
我想你在谈论框架类
让我们跳过后台发生的技术问题......(几乎所有关于这一点都已经解释过了:-)
此错误只是由于框架与您尝试运行它的构建不兼容。
修复:-
1) 从项目中删除框架
2) 然后:-
如果正在运行模拟器,请转到框架项目并生成框架项目,从 iOS 模拟器列表中选择模拟器(模拟器列表中的任何设备),然后将框架导入主机项目
如果运行的是物理设备,请转到框架项目并生成框架项目,选择"通用iOS设备"/"物理设备(已连接)",然后将框架导入主机项目
它现在应该工作正常。希望这有帮助!
您是否尝试过在框架上查看您的方案,看看它是否指向产品>方案>运行>构建配置下的"发布"?
这些答案都没有解决我的特定问题。对我来说的问题是,在某些时候(不记得为什么)我添加了一个自定义模块映射文件,其中包含以下代码:
framework module Foo {
umbrella header "Foo.h"
module * { export * }
export *
}
出于某种原因,这与 Swift 类发生了冲突。从框架目标中删除模块映射文件修复了错误
对于使用 objc + swift 的自定义 pod 框架:
创建一个新的头文件,如:{框架名称}.h并添加:
#import "{FrameworkName}-umbrella.h"
然后执行容器安装...或者像这样在 {FrameworkName}-umbrella.h 中添加此文件:#import {框架名称}.h