有没有办法为结构定义一个协议属性,取决于它在哪个平台上使用?

问题描述 投票:1回答:1

我正在使用iOS和WatchOS。

我有一些在iPhone上创建并发送到Apple Watch的结构。 struct的目标成员资格属于iOS应用程序和WatchKit Extension。

我想为这些只能在WatchKit扩展中访问的结构定义一个协议属性:

var complicationTimelineEntry: CLKComplicationTimelineEntry? { get }

CLKComplicationTimelineEntryClockKit框架的一部分,这在iOS上不可用,所以我无法编译。

有办法做到这一点吗?或者我应该放弃一刀切的方法并解决问题?

目前,我只是使用其他协议在WatchOS端创建结构的扩展。它有效,但它比我想要的步骤多一些。

swift swift-protocols
1个回答
3
投票

你可以这样做:

protocol xyz {
  #if os(watchOS)
      var complicationTimelineEntry: CLKComplicationTimelineEntry? { get }
  #endif
  .
  .
  .
}

如果基本上检查应用程序运行的是什么。

其他可用选项os(iOS)os(tvOS)os(OSX)

© www.soinside.com 2019 - 2024. All rights reserved.