2016-11-14 63 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