如何在iOS核心代码中引用WatchKit扩展中的Swift类?

4
我正在尝试让我的iOS应用程序每次从服务器更新数据时向WatchKit Extension发送一组数据。
这是我iOS应用程序中的代码(名称已更改)
[WatchKitDataModel loadDataFromSource: currentData]
然而,iOS应用程序无法识别WatchKitDataModel。
错误是“使用未声明的修饰符”。
请帮助我使我的应用程序相互通信!
2个回答

9

请确保您的有问题的类被添加到应用程序目标和WatchKit目标中,这可以在“Document”面板中完成。

enter image description here

图片显示的是一个今日扩展程序,但原则是相同的。


这对我真的很有帮助。当我将我的类设为公共类并将其导入到我的WatchKit中时,它仍然没有显示出来,让我感到困惑。谁知道这只是一个简单的复选框问题。出于兴趣,这是常规操作吗?对我来说,必须在IDE中勾选复选框才能使代码对另一个目标可用似乎有点奇怪。我认为简单的导入应该就足够了。 - Lightbulb1

1
要在WatchKit Extension和其包含的应用程序之间共享代码,请在应用程序中创建一个嵌入式框架。框架是苹果推荐的在应用程序内部和应用程序之间共享代码的工具。
要在Xcode 6中创建嵌入式框架,请选择您的项目,然后转到“文件>新建>目标...”。然后在打开的对话框中选择“iOS>框架和库>Cocoa Touch Framework”。单击“下一步”。给它一个名称,例如SomethingKit,类似于Apple使用的UIKit、HealthKit、WatchKit等。现在,在新框架内的文件中创建您的新类和其他公共代码。当您想在任何其他目标中使用它时,即WatchKit Extension或其包含的应用程序,请不要忘记导入SomethingKit。
啊,还有不要忘记给框架中公共类和函数提供public访问级别。

关于共享代码的框架,例如哪些内容不能包含在框架中,更多信息请参阅苹果的文章:使用嵌入式框架共享代码

此外,还有一段有趣的WWDC 2014会议视频介绍了这个问题:构建现代化框架


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接