使用 IBDesignable 使用 Swift 包构建期间来自 IB 的非常奇怪的错误

Very Strange Errors From IB During Build With Swift Package, Using IBDesignable

我开发了this shared package。它工作正常。

In the package test harnesses (3 iOS apps),效果很好,而且 IB 故事板呈现控件(这是一个 IBDesignable)。

但是,当我将它作为一个包包含在另一个应用程序中时(我无法共享源代码),我收到了这些非常奇怪的渲染失败消息:

Error: 'UIPickerView' is unavailable in tvOS

等等。有一堆“在 tvOS 中不可用”错误。

日志如下所示:

构建成功,应用运行良好。但是,我想知道这是否会导致 App Store 发布过程出现问题。

好吧……呃。它是一个 iOS 包和实用程序,并利用了很多东西,例如触觉。

程序包明确指出它是 iOS(12),但我看不出有任何迹象表明我的故事板为何坚持尝试呈现为 tvOS。

我错过了什么?我认为 the Package.swift file 中我一定遗漏了一些东西,但它非常简单:

import PackageDescription

let package = Package(
    name: "RVS_Spinner",
    platforms: [
        .iOS(.v12)
    ],
    products: [
        .library(
            name: "RVS-Spinner",
            targets: ["RVS_Spinner"])
    ],
    targets: [
        .target(name: "RVS_Spinner")
    ]
)

您需要将这些有问题的文件中的每一个都包装在

#if os(iOS)

#endif

这样它们就不会为其他平台编译,因为您所指的内容仅在 iOS.

上可用

据我所知,你不能阻止一个包在所有平台上构建,但你可以 select 使用 #if os() 技巧 [=] 在哪个平台上编译哪个文件

我认为您对 Package.swift 文件中的 platforms 参数感到困惑。它不是说这个包在哪里可用,而是说每个平台所需的最低版本。

查看 Apple 的平台参数文档:

platforms - The list of minimum deployment targets per platform.