【问题标题】:Not able to access public swift class through framework无法通过框架访问公共 swift 类
【发布时间】:2016-05-10 12:38:38
【问题描述】:

我创建了一个项目并将其导入到这个框架中。当我将此框架加载到演示应用程序中时,我可以访问MyTest.swift 文件中的公共类MyTest,但无法访问MessagesViewController.swift 中的公共类。我错过了什么吗?难道我们不能通过这种方式通过框架访问项目内的文件吗?

【问题讨论】:

  • 你在导入FireChat-Swift模块吗?
  • 您能否提供更多信息,例如您在编译时遇到的任何错误。为什么要嵌套 Xcode 项目?看起来您的测试应用程序是 FireChat 是您的框架吗?我会说您的项目结构混乱,但我需要更多细节才能确定。

标签: ios objective-c xcode swift xcode7


【解决方案1】:

重组你的项目空间,让你的应用程序不在你的框架内,然后处理应用程序和框架之间的链接文件。

  1. 创建一个 xcworkspace 文件以包含所有子项目。如需更多信息,请查看Xcode Concepts 文档中的Xcode Workspace 部分

  1. 打开工作区文件并通过将 xcodeproj 文件拖动到“项目导航”面板来添加您的框架和应用程序项目。将文件添加为 Xcode 时要小心,因为倾向于将一个项目放在另一个项目中,您不希望这样。

  2. 构建您的框架,然后将其链接到应用程序项目。只要它们是公开的,这还将使您的所有框架文件都可用于您的应用程序项目(有关更多详细信息,请参见下文)。在编辑器视图中导航到 FireChat-Swift 应用项目目标,然后从框架项目中打开产品目录并将框架文件拖到常规选项卡的 Embedded Binaries 部分。

  1. 现在您的框架已与您的应用项目链接。您需要在应用程序的源代码中导入您的框架。

  2. 将新文件添加到您的框架中,并记住,如果您要求它们在框架之外使用(即由您的应用程序使用),它们需要公开。

【讨论】:

  • 超级好用!!
【解决方案2】:

您是否将MessagesViewController.swift 添加到原始项目中的目标?

要检查它,只需打开原始项目,选择MessagesViewController.swift 并查看右侧边栏(目标会员部分)。

【讨论】:

  • 如此原始,但又如此强大。只需选中并取消选中文件的目标成员身份,它就可以解决问题:)
【解决方案3】:

我遇到了这个问题,我通过转到我的框架并将目标成员资格添加到 TestsUITests 来解决我的问题:

奇怪的修复,但我想它有效! ?‍♂️

【讨论】:

  • 这很奇怪,但很有效。假设它依赖于目标意义上的项目结构
【解决方案4】:

这也可能是 Xcode 中错误的一部分,但我不确定是什么原因导致的 - 可能是从另一个项目中将文件拖到您的库中。我只是通过关闭并重新启动 Xcode,然后清理构建文件夹来解决此问题(按住 Alt 然后从 Product 菜单中选择选项)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-11
    • 1970-01-01
    相关资源
    最近更新 更多