2014-06-05 152 views
34

我正在用Xcode-6探索Swift,並且迄今爲止這麼好,儘管我認爲新集合需要一點點工作,因爲我已經設法分解了幾次編譯器。構建純Swift可可觸摸框架

問題是現在我被困在試圖建立一個框架包然後在另一個項目使用。該項目的構建沒有問題,並且所有測試都通過成功。當我去創建歸檔(我假設是需要什麼)我收到錯誤:

:0: error: underlying Objective-C module 'Sample' not found

現在,我想這已經是與我Sample.h的告訴我

// In this header, you should import all the public headers of your framework using statements like #import <Sample/PublicHeader.h> 
內容

這是很好,除了我只使用這個框架的swift枚舉,結構和類,因此沒有.h文件存在。

任何人都可以點亮這一個,因爲我找不到任何可用的文檔呢?

+0

爲什麼存檔框架? – vladof81

+0

您是否嘗試過構建純Swift框架項目並將其用於同一工作區中的客戶端應用程序?如果是這樣,它工作嗎? – Omer

回答

25

我和一位工程師坐了下來,問了一個確切的問題。這是他們的迴應:

Xcode 6目前不支持構建可分發的Swift框架,並且Apple可能不會將此功能構建到Xcode中,直到其有利於他們這樣做。現在,框架意味着嵌入到您的應用程序的項目中,而不是分佈式的。如果您觀看任何會議視頻或查看示例項目,這總是安排。 Another reason is that Swift is very new and likely to change. Thus your Swift-based framework is not guaranteed to work on the platform you originally built it on.

輕微更新

工程師提到,這不是不可能使一個框架分佈,只是它不支持。

+4

這與Apple的文檔直接衝突:https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html – rougeExciter

+2

這些文檔仍然是「預發佈」,因此它的主題改變另外,他們並沒有說它不可能建立一個框架並在一個單獨的項目中使用它。他們只是說不支持。你有沒有嘗試構建一個Swift框架目標在不同的項目中使用? – Aaron

+0

是的,我正在保持粉末乾燥,試圖找到有效和無效的界限,但目前這一切都工作正常。我懷疑存在以下約束(至少):如果他們修改了swift語言,儘管有承諾的二進制兼容性,應用程序及其所有框架必須使用相同的二進制版本構建。 – rougeExciter

0

我認爲這是XCode 6中的一個錯誤,或者蘋果不允許在Beta版中將框架從XCode歸檔。

如果編譯到配置文件XCode正確生成框架。 (見DerivedData創建的Release文件夾)

11

我能夠去到目標的框架和頭下的構建階段選項卡上,讓過去的錯誤,刪除MyFramework.h文件

不過我當我使用框架在包含應用程序和應用程序擴展之間共享代碼時,出現了「底層Objective-C模塊未找到」錯誤,這兩者都是純Swift。

Image showing MyFramework.h for the MyFramework target on the Build Phases tab under Headers

+0

這幫了我同樣的問題雖然它並沒有真正告訴我什麼是錯的......反正,謝謝!:) – Dschee

2

您可能會發現這個有用:Creation of pure swift module

簡而言之:這可能使靜態的框架,但有一個問題:它不會在最終用戶的工作」項目,如果「ProjectName-包括Swift.h頭文件。

但是,它工作正常,如果你只使用swift。

+0

你可以擴展它嗎? – OlivaresF

1

假設您正在創建一個真正純的Swift模塊,您必須禁用Objective-C兼容性頭文件和任何生成的接口頭文件,以便編譯器不會假設它可以找到該框架的Objective-C模塊。enter image description here

請勿刪除您的公共框架標題。如果您願意,您會在鏈接時收到模塊映射警告。