为什么我不能导入 ClockKit 并在 Xcode 游乐场中使用 CLKComplicationDataSource?

Why can't I import ClockKit and use CLKComplicationDataSource in an Xcode Playground?

我可以导入 WatchKitWatchConnectivity 并使用 WCSessionDelegate 等各种委托,没有任何问题。

但是当我尝试导入 ClockKit 或添加 CLKComplicationDataSource 时,Xcode 会抛出类似 "no module exists."

的错误

为了检查这一点,我创建了一个手表应用程序项目并检查了 ComplicationController.swift。源代码中确实有 import ClockKit

为什么我们不能在 Xcode Playground 中测试这个 API?这不是违背了拥有 Playground 的初衷吗?

不可以,原因如下。

  • Playground 运行在 iOS 模拟器上运行,而不是 watchOS 模拟器。 iOS.

  • 中没有您要使用或测试的内容
  • ClockKit 框架更像是与表盘复杂功能相关的对象集合。它在 playground 中可用是没有意义的,因为 playground 本身不会有任何并发​​症。

  • 您无法在 playground 中真正测试复杂功能,因为 playground 中没有交互式复杂功能服务器 运行ning 会调用您的数据源方法。

    并发症 运行 在后台,由并发症服务器管理。当您的复杂功能在表盘上处于活动状态(启用)时,系统会在后台唤醒您的扩展程序,实例化您的数据源实例,然后获取该复杂功能所需的必要数据:

    You do not instantiate your data source class explicitly. After defining your class, specify the class name in the General tab of the project settings for your WatchKit extension. When the system needs data, it instantiates your class and initializes it by calling its init method. Once initialized, it calls the corresponding protocol methods to gather any needed data.

您可以 submit a feature request 要求 Apple 让您在 playground 中交互式地测试您的复杂功能控制器。