在另一个 Swift 项目中使用自定义 Swift 框架
Posted
技术标签:
【中文标题】在另一个 Swift 项目中使用自定义 Swift 框架【英文标题】:using custom Swift framework in another Swift project 【发布时间】:2015-07-07 10:22:27 【问题描述】:我在另一个项目中使用自定义纯 Swift 框架时遇到问题。
一些笔记(我相信我已经彻底搜索了所有可能的答案):
-
我在框架中将我的类声明为公共类。
我已成功构建并使用 Swift 目标应用程序运行了框架,但只能在框架项目中运行。
我已将我的框架包含在链接框架、库和嵌入式二进制文件中。
我要做的是通过仅导入产品框架来构建一个纯 Swift 单视图应用程序项目。我得到的错误是“MyClass 不可用:找不到此类的 Swift 声明”(如上所述是公共的)。我也有一个类似错误的公开枚举:“使用未声明的类型'MY_ENUM'” 示例代码如下:
import Foundation
import UIKit
import MyFramework /// don't know if this is needed.
public class ViewController: UIViewController
var myclass:MyClass? ///here is the above error ,it's initialized in the viewDidLoad() function
var myEnum:MY_ENUM = MY_ENUM.MY_ENUM_VALUE /// 2nd enumeration error.
override public func viewDidLoad()
super.viewDidLoad()
self.myClass = MyClass(arguments) ///same error as above
self.myClass?.myFunction /// ViewController does not have a member 'MyClass' error
/// more code here with errors regarding the class and enum.
我也尝试过使用 Objective-C 桥接头(尽管我认为这是错误的)并导入我的框架头。
#import <MyFramework/MyFramework.h>
是否有可能解决上述问题,或者是 Swift 的限制,我正在徒劳地尝试?
最后一点:我在我的框架中包含了来自另一个 Objective-C 框架的一些其他头文件,因为这是将其构建为自定义 Swift 框架的唯一方法。那里的类对 Swift 应用程序是可见的。
P.S.如果需要更多代码,我很乐意提供。
【问题讨论】:
【参考方案1】:解决了这个问题。
不得不将 .swift 文件和 .h 文件作为公共头文件放在我的自定义框架中(虽然不明白为什么)并重新构建。
【讨论】:
您的意思是在构建阶段?您是否在框架头文件中添加了一些内容?似乎对我不起作用。 自从我上次这样做以来已经很久了,但如果我没记错的话,只需将 .swift 文件拖放到 Xcode 资源管理器的 .framework 文件夹中,然后在构建阶段添加它们只是为了确定。【参考方案2】:可能你的框架路径不对?
【讨论】:
我通过拖放导入框架。它在项目导航器中不是红色的,所以我认为这不是问题。 @2mytrompess Emm...你检查过你的 Build Sitting 吗?框架搜索路径? 如果您指的是构建设置中的框架搜索路径,是的,它是正确的。虽然现在有多个路径,因为我一直在尝试导入和删除几次。同样正如我在帖子中所说,目标 App 可以看到在我的框架标题中声明的其他类。这些类虽然是 Objective-C 代码,但我没有创建它们。我必须将这些标头放入我的 Swift 框架项目中,并且不仅包括我使用过的第 3 方框架,如果我希望我的框架能够无错误地构建。问题在于我的 Swift 课程。以上是关于在另一个 Swift 项目中使用自定义 Swift 框架的主要内容,如果未能解决你的问题,请参考以下文章
在 Swift 项目中使用 Objective C 类中的 Swift 类
在 Swift 项目中使用 Objective C 类中的 Swift 类