2016-11-14 61 views
5

假设我们有两个框架在Swift中编写:A.frameworkB.framework,A依赖于B。我希望依赖于A的每个项目都能够访问框架B的api,而无需在项目源文件中使用import B。如何实现?Swift:依赖的导出API

编辑:特别是我intrested如何可以通过Cocoapods完成这项工作。

ANOTHER编辑:我认为这将是有益的,如果我来解释一下其中这个问题出现的情况下,因为我还没有得到合适的解决办法,尽管它的持续时间和赏金。

所以,我有pod Freestylerhttps://github.com/cayugasoft/Freestyler),它本身取决于pod FreestylerCorehttps://github.com/cayugasoft/FreestylerCore)。工作正常,但是我必须import FreestylerCore在项目中,即使import Freestyler完成。它对我来说看起来有点烦人,因为我认为这种依赖关系(Freestyler -> FreestylerCore)作为实现细节,我想如果库的用户自动使用这个工具,除了主要的pod,Freestyler之外,不需要导入任何东西。所以,这就是我问这个问题的原因。有什么方法可以实现这个吗?

+0

纠正我是否错误,因为A依赖于B并且在源文件A中有导入B.现在你想要一个项目P而不必在P源文件中导入B?是对的吗 ?如果是这种情况,最终你想添加B作为A的依赖关系,并只添加A作为P的依赖关系? –

+0

@PenkeySuresh:我基本上想要Objective-C中的伞头。您导入此标题并自动导入所有其他标题,并且不必手动导入它们。我想知道是否有机制来实现类似的行为,但在Swift中。 –

+0

我认为你要找的是'@ _exported'。 – HAS

回答

0

原来,在Swift中,这是默认行为。

如果Pod.A依赖于Pod.B,那么依赖于Pod.A的项目(通过在Podfile中包含Pod.A)确实可以看到Pod.B。

要查看如何设置具有依赖项的Pod.A以及使用Pod.A(并且对Pod.B具有可见性)的示例项目的示例,请参阅我的Public GitHub Repo Demo for this:

https://github.com/ericwastaken/CocoaPod-Dependency-Demo

我添加了注释实施例应用(的ViewController),它显示该工作。回购有额外的解释。

+0

谢谢你的回答,@ericWasTaken。不幸的是,这不是我的意思。很明显,您可以在项目中使用pod B,这取决于pod A *,如果您导入pod B *,但我问如何在不导入pod B的情况下实现此*,只导入pod A *。我查看了你的github示例 - 如果在ViewController中导入StackO_Dependency_Demo被注释掉,代码将不会被编译。 –

+0

我的示例应用程序从未在Podfile中引用Pod.B。 Pod.B是React pod!我的示例仅引用Pod.A,并且它自动为您提供了通过Pod.A(StackO pod = Pod.A)来访问Pod.B(反应窗格)的权限。当然,如果你删除Pod.A它不会建立。这是视图控制器中使用的主要Pod。无论如何,也许你正在寻找Pod.B逻辑的静态包含。您当然可以将这些类放入您的Pod.A中,并将它们一起编译为一个Pod。但这不是CocoaPod最终的工作方式,也不是它的目的。 – ericWasTaken

+0

现在看看你的问题,如果你根本不需要导入语句,那么你需要在你的Pod.A中包含Pod.B逻辑代码/类。也许你可以分叉Pod.B,然后添加自己的逻辑。至少以这种方式,您可能能够将更改合并到未来的叉子中。 – ericWasTaken