I am getting this error, as you can see from the image I already do what it tells me how to correct the error.
What am I doing wrong?
CodePudding user response:
Unfortunately what you are looking to do is not possible.
The compiler error is generated because the compiler cannot apply @available attributes to properties which have a property wrapper applied to them. However, even if you remove the @State property wrapper and instead wrap the property in a State manually, like this
@available(macOS 12, *) private var sortOrder = State(wrappedValue: [KeyPathComparator(\Repository.name)])
you get a different compiler error:
Stored properties cannot be marked potentially unavailable with '@available'
So as the new compiler error tells you, you cannot mark stored properties as @available without marking the enclosing type @available.
To resolve the issue, you need to create 2 versions of your View, 1 that's marked @available(macOS 12, *) and contains the KeyPathComparator and another one without the @available that doesn't contain the KeyPathComparator property.

