为 "Any iOS Device" 构建 Swift 包时找不到 SwiftUI 或组合类型
Cannot find SwiftUI or Combine types when building Swift package for "Any iOS Device"
我有一个支持 iOS 10、macOS 10.13、tvOS 10 和 watchOS 2 的 Swift 软件包。我希望这个软件包公开一些 SwiftUI 功能当引用模块可以导入 SwiftUI 时可以使用它。例如,使我的包类型 (Persisted
) 符合 SwiftUI 协议 DynamicProperty
:
#if canImport(SwiftUI)
import SwiftUI
@available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0, *)
extension Persisted: DynamicProperty { }
#endif
有了上面的内容,在为“任何 iOS 设备 (arm64)”构建时不再构建项目 - 我收到编译器错误:
Cannot find type 'DynamicProperty' in scope
当我将构建目标更改为任何 iPhone 模拟器时,它构建正常。在为“任何 Mac”、“任何 tvOS 设备”等构建时,它也构建正常。我需要做什么才能为任何 iOS 构建包?
根据this reddit post,这与 SwiftUI 在某些 ARM 架构上的可用性有关。
以下条件为我解决了问题:
#if canImport(SwiftUI) && (!os(iOS) || arch(arm64))
我有一个支持 iOS 10、macOS 10.13、tvOS 10 和 watchOS 2 的 Swift 软件包。我希望这个软件包公开一些 SwiftUI 功能当引用模块可以导入 SwiftUI 时可以使用它。例如,使我的包类型 (Persisted
) 符合 SwiftUI 协议 DynamicProperty
:
#if canImport(SwiftUI)
import SwiftUI
@available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0, *)
extension Persisted: DynamicProperty { }
#endif
有了上面的内容,在为“任何 iOS 设备 (arm64)”构建时不再构建项目 - 我收到编译器错误:
Cannot find type 'DynamicProperty' in scope
当我将构建目标更改为任何 iPhone 模拟器时,它构建正常。在为“任何 Mac”、“任何 tvOS 设备”等构建时,它也构建正常。我需要做什么才能为任何 iOS 构建包?
根据this reddit post,这与 SwiftUI 在某些 ARM 架构上的可用性有关。
以下条件为我解决了问题:
#if canImport(SwiftUI) && (!os(iOS) || arch(arm64))