Watchkit - 共享代码 - 框架、应用程序扩展、应用程序组、添加目标或只是复制文件?

Watchkit - shared code - framework, app extension, app groups, add target or just copy files?

我有一个现有的应用程序,我正在向它添加一个 Watch 应用程序。我有几个 .swift 文件,其中包含我需要用于 watchkit 应用程序(函数和一些常量等)的主应用程序代码。我对共享此代码的选项感到困惑 - 我怎么知道要尝试和使用哪一个?

创建一个应用组,我自己的框架,应用扩展?实际上,我开始只是将 .swift 文件复制到我的 watchkit 应用程序文件夹中,并注意到当您在出现的对话框中将文件添加到 Xcode 时,您会看到 "Add to targets" 的复选框,所以这让我开始思考 - 有没有一种方法可以更改主应用程序部分中我的 .swift 文件的属性,并在 "Add to Targets" 那里检查 WatchKit 应用程序?

这似乎是要走的路,对吧?

感谢您的帮助

要在 Apple Watch 应用和您的主应用之间共享代码,您需要使用该共享代码创建一个框架。您自己说过,Apple Watch 应用程序是一个全新的目标 - 它不会了解您现有的代码。

创建应用组,您还可以使用 initWithSuiteName 共享 NSUserDefaults:,对于 Coredata,您可以使用共享容器路由。

我解决了只需单击文件并将它们添加到两个目标中。 (iphone 应用目标和 Apple Watch 扩展目标)。

为了修复共享应用程序问题,我使用了这个:

#if (SL_TARGET_APP_EXTENSION == NO)
    [[UIApplication sharedApplication] .....
#endif 

SL_TARGET_APP_EXTENSION是apple watch扩展目标中添加的预处理器宏

希望对您有所帮助。