Xcode - 从嵌套框架访问 swift 类
Posted
技术标签:
【中文标题】Xcode - 从嵌套框架访问 swift 类【英文标题】:Xcode - Accessing swift class from nested framework 【发布时间】:2021-02-05 09:33:42 【问题描述】:我有一个带有嵌套框架的 Xcode 项目。
嵌套框架包含一个我想使用的 Swift 类,它使用 @objcMembers public class
。
@objcMembers public class SPDetailedStringPicker : UIViewController
我想在我的基础项目中使用这个 Swift 类。 我尝试了许多导入方法,例如使用:
#import "MyNestedFramework/MyNestedFramework-Swift.h"
也试过了:
#import "MyNestedFramework-Swift.h"
但没有运气。 项目结构如下:
- MyProject
- MyNestedFramework.xcodeproj
- Classes
- The Swift class I want to use
- MyProject
- Classes
- The Objective c class I want to use that swift class in
【问题讨论】:
您需要为此使用open
访问权限,请参阅docs.swift.org/swift-book/LanguageGuide/AccessControl.html
尝试将 public 替换为 open 仍然无法访问课程
【参考方案1】:
使用<>
而不是"
#import <MyNestedFramework/MyNestedFramework-Swift.h>
【讨论】:
也试过这个,我得到'MyNestedFramework/MyNestedFramework-Swift.h'文件没有找到 您是否将您的框架链接到您的目标? 是的,我的目标可以访问框架内的所有其他内容,只是不能访问 swift 类 您也可以打开生成的 MyNestedFramework.framework 文件,并检查名为“Headers”的文件夹是否存在 -Swift.h 修复了!感谢您的帮助@arturdev - 我发现存在 -swift 文件后发现这是一个标题问题,打开 Build Phases -> Headers,并将我的 .framework 文件添加到项目中。现在我可以按照您的回答进行导入,并且代码完成会显示在框架中的其余文件中。【参考方案2】:感谢 @arturdev 的建议 - 我设法解决了这个问题。 建议在以下位置检查编译的框架头文件:
- MyProject
- MyNestedFramework
- Products
- MyNestedFramework.framework
正在生成MyNestedFramework-Swift.h
头文件。然后我打开MyNestedFramework
下的构建阶段选项卡并打开Headers
部分,然后将实际的MyNestedFramework.Framework
添加到项目中。
我现在可以通过导入在我的基础项目中使用来自 MyNestedFramework
的 Swift 文件:
#import <MyNestedFramework/MyNestedFramework-Swift.h>
【讨论】:
以上是关于Xcode - 从嵌套框架访问 swift 类的主要内容,如果未能解决你的问题,请参考以下文章
Xcode Swift:使用使用 pod (CocoaPods) 的框架时出错
如何在同一框架内访问 Objective-C 中的内部 Swift 类?
当Apple从设置中删除时,如何在Xcode 9 Simulator中访问Twitter?