首页 > 解决方案 > 无法在 Swift Docker 5.1.3 中使用“NSKeyValueObservation”

问题描述

我正在尝试在 Docker 上运行的 Swift 可执行文件中使用 NSKeyValueObservation。我正在使用以下 swift 版本:5.1.3

我剥离了所有内容,我只是在 main.swift 中声明:

var observer: NSKeyValueObservation?

返回的错误是:

/package/Sources/TestPackage/main.swift:30:19: error: use of undeclared type 'NSKeyValueObservation'
    var observer: NSKeyValueObservation?

由于错误不会在本地发生,我的预感是 Docker 正在运行 linux 并且 linux 不知道 NSKeyValueObservation 但这在任何地方都没有记录。如果是这样,我该如何解决这个问题?

相关的 Docker 版本信息为:

Client: Docker Engine - Community
 Version:           19.03.5
 API version:       1.40
 Go version:        go1.12.12
 Git commit:        633a0ea
 Built:             Wed Nov 13 07:22:34 2019
 OS/Arch:           darwin/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.5
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.12.12
  Git commit:       633a0ea
  Built:            Wed Nov 13 07:29:19 2019
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          v1.2.10
  GitCommit:        b34a5c8af56e510852c35414db4c1f4fa6172339
 runc:
  Version:          1.0.0-rc8+dev
  GitCommit:        3e425f80a8c931f88e6d94a8c831b9d5aa481657
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

标签: swiftdockerswift-package-manager

解决方案


你的预感是正确的。 NSKeyValueObservation依赖于非达尔文平台上不存在的 Objective-C 运行时。您将需要使用另一种选择,例如某种 Rx 风味。


推荐阅读