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