我如何在 Xcode 11 的包内处理旨在在不同目标(如 iOS、macOS、tvOS 等)上运行的代码?
我的意思是:我有一些代码,我正试图将其转换为一个包。此代码具有适用于 macOS 和适用于 iOS 的 Storyboard以及可与这些 Storyboard一起运行的 swift 类,或者换句话说,swift 类可在 macOS 上运行,而其他类则可在 iOS 上运行。
我希望能够创建一个可以独立导入任何项目的包,无论该项目是否仅适用于 iOS、仅适用于 mac 或具有两种架构的目标。
最大的问题是包没有目标,我可以在其中为其分配文件。
Apple 有 this example他们显示您可以指定平台的位置。
let package = Package(
name: "MyPackage",
platforms: [
.macOS(.v10_13), .iOS(.v11), .tvOS(.v11),
],
但正如预期的那样,他们的文档没有说明如何操作。
我该怎么做?
最佳答案
SwiftPM 当前不支持 Storyboard 和其他 Assets ,因此您无法使用它们执行此操作。
如果您只有源代码,那么您可以使用 #if os(iOS)
/#if os(macOS)
block 来包围文件的所有内容适用于特定操作系统。
您需要将所有文件放在同一个产品中,以便使用模块随处使用 import TheNameOfYourModule
,而不是使用特定于 iOS/macOS 的导入语句。
关于ios - 如何构建适用于 iOS 和 macOS 的混合包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58381047/