2015-01-15 44 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