首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在DocumentGroup应用程序的Main中使用if #available()

如何在DocumentGroup应用程序的Main中使用if #available()
EN

Stack Overflow用户
提问于 2022-11-03 08:27:44
回答 2查看 90关注 0票数 0

在下面的代码中,我只想在# .windowResizability ( macOS 13.0,*) == true或@ available(macOS 13.0,*)下使用它,因为它在macOS 13下不可用。

代码语言:javascript
复制
//
//  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")
    }
}
EN

回答 2

Stack Overflow用户

发布于 2022-11-03 09:19:12

在单个表达式的情况下,只能删除return

试试这个:

代码语言:javascript
复制
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)
            }
        }
    }
}
票数 1
EN

Stack Overflow用户

发布于 2022-11-03 08:37:41

只要用if语句包装就可以了

代码语言:javascript
复制
if #available(macOS 13, *) {
    .windowResizability(.contentSize)
}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74300019

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档