2015-01-15 43 views
4

我試圖讓我的iOS應用程序每次從服務器更新數據時都會向WatchKit擴展發送一組數據。如何從核心iOS代碼中引用WatchKit擴展中的Swift類?

這是在我的iOS應用程序的代碼如下所示(名稱變更)

[WatchKitDataModel loadDataFromSource: currentData]

然而,iOS的應用程序無法識別WatchKitDataModel。

錯誤是「使用未聲明的修飾符」。

請幫我讓我的應用程序彼此交談!

回答

8

確保您的違規類添加到兩個應用目標和WatchKit目標文檔面板

enter image description here

圖爲TodayExtension但原理是一樣的。

+0

這對我真的很有幫助。當我將我的課程公開並導入到我的watchkit中時,我仍然難以理解,但仍未顯示出來。誰知道這是一個簡單的複選框。出於興趣,這是做的事情?對我來說,似乎有點奇怪,必須在IDE中勾選複選框才能讓代碼訪問另一個目標。我認爲簡單的導入應該足夠了。 – Lightbulb1 2015-03-25 09:51:57

1

要在您的WatchKit Extension及其包含的應用程序之間共享代碼,請在您的應用程序中創建一個嵌入式框架。框架是蘋果公司推薦的工具,用於在應用內和應用之間共享代碼。

要在Xcode 6創建一個嵌入式框架,選擇您的項目並轉到文件>新建>目標...然後在打開選擇的iOS對話框>框架&庫>可可觸摸框架。點擊Next。給它一個名字,SomethingKit,類似於Apple使用的名字,例如UIKit,HealthKit,WatchKit。現在在您的新框架內的文件中創建新的類和其他通用代碼。當您想將其用於任何其他目標(即WatchKit Extension或其包含的應用程序)時,請不要忘記import SomethingKit

嗯,不要忘了給框架中面向公衆的類和函數提供publicaccess level

有關框架共享代碼的更多信息,例如框架中不能包含哪些內容,請參閱Apple的文章:Using an Embedded Framework to Share Code

關於此問題,還有一個有趣的WWDC 2014會議視頻:Building Modern Frameworks