In the code below I want to use .windowResizability only if #available(macOS 13.0, *) == true or @ available(macOS 13.0, *) cause it doesn't available under macOS 13. I can not find the solution by myself.
//
// Test_HowAviableApp.swift
// Test HowAviable
//
// Created by Sebastien REMY on 03/11/2022.
//
import SwiftUI
import UniformTypeIdentifiers
@main
struct Test_HowAviableApp: App {
var body: some Scene {
DocumentGroup(newDocument: MyDocument()) { file in
MyView(document: file.$document)
}
// @available(macOS 13.0, *) // <- DOESN'T WORK!
//.windowResizability(.contentSize) // Only for macOs 13
}
}
struct MyDocument: FileDocument, Codable {
static var readableContentTypes = [UTType(exportedAs:"com.test.test")]
var test = "test"
init() {
}
init(configuration: ReadConfiguration) throws {
if let data = configuration.file.regularFileContents {
self = try JSONDecoder().decode(MyDocument.self, from: data)
}
}
func fileWrapper(configuration: WriteConfiguration) throws -> FileWrapper {
let data = try JSONEncoder().encode(self)
return FileWrapper(regularFileWithContents: data)
}
}
struct MyView: View {
@Binding var document: MyDocument
var body: some View {
Text("Hello")
}
}
CodePudding user response:
In the case of a single expression only you can remove return
:
Try this:
struct MacDemoApp: App {
var body: some Scene {
if #available(macOS 13, *) {
return DocumentGroup(newDocument: MyDocument()) { file in
ContentView(document: file.$document)
}.windowResizability(.contentSize)
} else {
return DocumentGroup(newDocument: MyDocument()) { file in
ContentView(document: file.$document)
}
}
}
}
CodePudding user response:
Just wrap it with if statement
if #available(macOS 13, *) {
.windowResizability(.contentSize)
}