使用IBDesignable使用Swift软件包进行构建期间,IB产生非常奇怪的错误

问题描述

我开发了this shared package。很好。

In the package test harnesses (3 iOS apps),它很好用,并且IB情节提要板呈现了控件(这是IBDesignable)。

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

Error: 'UIPickerView' is unavailable in tvOS

以此类推。一堆“ tvOS中不可用”错误

这是日志的样子:

Image of build errors in the log

构建成功,应用运行正常。但是,我想知道这是否会在App Store发行过程中引起问题。

嗯... DU。这是一个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 上可用。

据我所知,您无法阻止包在所有平台上构建,但您可以使用 #if os() 技巧选择要在哪个平台上编译的文件

我认为您对 platforms 文件中的 Package.swift 参数感到困惑。并不是说该软件包在何处可​​用,而是说每个平台所需的最低版本。

查看 Apple 的关于平台参数的文档:

平台 - 每个平台的最低部署目标列表。

Apple docs