我对在macOS 10.15.7上使用FileHandle.read(upToCount:)
有问题;每当我try 这样做时,都会出现以下错误:
error: 'read(upToCount:)' is only available in macOS 10.15.4 or newer
此约束与我在以下位置看到的内容相匹配:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/swift/Foundation.swiftmodule/x86_64.swiftinterface
extension FileHandle {
...
@available(OSX 10.15.4, iOS 13.4, watchOS 6.2, tvOS 13.4, *)
public func read(upToCount count: Swift.Int) throws -> Foundation.Data?
...
}
我可以通过一个小测试来复制这个可用性问题;main.swift
个左右:
@available(OSX 10.15.4, *)
func test() {}
test()
这给了我同样的一般错误:
error: 'test()' is only available in macOS 10.15.4 or newer
如果我将@available
约束更改为OSX 10.15
或OSX 10.15.0
,这将很好地编译,但OSX 10.15.1
或更高版本将报告相同的错误,这似乎表明工具链认为构建目标是10.15.0.不过,看看swiftc
在引擎盖下做了什么,它似乎使用了正确的SDK和三元组:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift \
-frontend \
-c \
-primary-file main.swift \
-target x86_64-apple-darwin19.6.0 \
-enable-objc-interop \
-stack-check \
-sdk /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk \
-color-diagnostics \
-target-sdk-version 11.1 \
-module-name main \
-o /var/folders/ml/3hynjc6s5v96y4k_wfy3gt6r0000gn/T/main-9906ee.o
有人能解释一下发生了什么,我能做些什么来说服我的工具链,让我相信这些功能可以用来构建?