Xcode swift ui 错误 'KeyPathComparator' 仅适用于 macOS 12.0 或更新版本

Xcode swift ui error 'KeyPathComparator' is only available in macOS 12.0 or newer

我收到了这个错误,正如您从图片中看到的那样,我已经按照它告诉我如何更正错误进行了操作。

我做错了什么?

很遗憾,您想要做的事情是不可能的。

生成编译器错误是因为编译器无法将 @available 属性应用到应用了 属性 包装器的属性。但是,即使您删除了 @State 属性 包装器,而是手动将 属性 包装在 State 中,就像这样

@available(macOS 12, *) private var sortOrder = State(wrappedValue: [KeyPathComparator(\Repository.name)])

你得到一个不同的编译器错误:

Stored properties cannot be marked potentially unavailable with '@available'

因此,正如新的编译器错误告诉您的那样,您不能在不标记封闭类型 @available.

的情况下将存储的属性标记为 @available

要解决此问题,您需要为 View 创建 2 个版本,其中一个标记为 @available(macOS 12, *) 并包含 KeyPathComparator,另一个没有 @available不包含 KeyPathComparator 属性.