不幸的是,你想要做的是不可能的.
生成编译器错误是因为编译器无法将@available
个属性应用于应用了属性包装的属性.然而,即使移除@State
属性包装器,而是手动将属性包装到State
中,如下所示
@available(macOS 12, *) private var sortOrder = State(wrappedValue: [KeyPathComparator(\Repository.name)])
您会遇到另一个编译器错误:
存储的属性不能用"@available"标记为潜在不可用
因此,正如新的编译器错误告诉您的,如果不将封闭类型标记为@available
,就不能将存储的属性标记为@available
.
要解决这个问题,您需要创建两个版本的View
,一个标记为@available(macOS 12, *)
并包含KeyPathComparator
,另一个不包含@available
且不包含KeyPathComparator
属性的版本.