如何在 Linux 上使用 Foundation 的 URLRequest 类型?
How can I use Foundation's URLRequest type on Linux?
当我尝试使用结构 URLRequest from Foundation 时,在使用 swift 5.1.1 编译时出现错误。相同的代码适用于 swift 5.0.1.
示例:给定文件 Foo.swift,内容为
import Foundation
print(URLRequest.self)
使用 Swift 5.0.1 我们得到
$ docker run --rm -v "$PWD:/app" swift:5.0.1 sh -c \
'swiftc /app/Foo.swift && ./Foo'
URLRequest
但是 5.1.1
$ docker run --rm -v "$PWD:/app" swift:5.1.1 sh -c \
'swiftc /app/Foo.swift && ./Foo
Foo.swift:2:7: error: use of unresolved identifier 'URLRequest'
print(URLRequest.self)
^~~~~~~~~~
我似乎找不到任何提及 Foundation 相关更改的内容,https://github.com/apple/swift-corelibs-foundation 的源代码看起来也很稳定。
这是怎么回事,是否有解决方法?
这是由于 recent move 网络相关对象进入新的 FoundationNetworking 模块所致。 Darwin 上不存在新模块,因此必须使用预处理器命令才能使代码在所有支持的平台上运行:
import Foundation
#if canImport(FoundationNetworking)
import FoundationNetworking
#endif
print(URLRequest.self)
这段代码可以很好地编译上面给出的两个 docker 命令。
当我尝试使用结构 URLRequest from Foundation 时,在使用 swift 5.1.1 编译时出现错误。相同的代码适用于 swift 5.0.1.
示例:给定文件 Foo.swift,内容为
import Foundation
print(URLRequest.self)
使用 Swift 5.0.1 我们得到
$ docker run --rm -v "$PWD:/app" swift:5.0.1 sh -c \
'swiftc /app/Foo.swift && ./Foo'
URLRequest
但是 5.1.1
$ docker run --rm -v "$PWD:/app" swift:5.1.1 sh -c \
'swiftc /app/Foo.swift && ./Foo
Foo.swift:2:7: error: use of unresolved identifier 'URLRequest'
print(URLRequest.self)
^~~~~~~~~~
我似乎找不到任何提及 Foundation 相关更改的内容,https://github.com/apple/swift-corelibs-foundation 的源代码看起来也很稳定。
这是怎么回事,是否有解决方法?
这是由于 recent move 网络相关对象进入新的 FoundationNetworking 模块所致。 Darwin 上不存在新模块,因此必须使用预处理器命令才能使代码在所有支持的平台上运行:
import Foundation
#if canImport(FoundationNetworking)
import FoundationNetworking
#endif
print(URLRequest.self)
这段代码可以很好地编译上面给出的两个 docker 命令。