首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何防止用户在SwiftUI中保存文档?

如何防止用户在SwiftUI中保存文档?
EN

Stack Overflow用户
提问于 2020-11-19 05:47:00
回答 1查看 148关注 0票数 1

我正在用MacOS Big Sur上的SwiftUI构建一个基于文档的应用程序。我希望阻止用户保存文件,因为它仅用作查看器。我如何在SwiftUI中做到这一点?

由于协议FileDocument,我被迫实现了写方法

代码语言:javascript
运行
复制
import SwiftUI

struct MyDoc: FileDocument {
    static var readableContentTypes: [UTType]
    
    init(configuration: ReadConfiguration) throws {
        <#code#> // reading
    }
    
    func fileWrapper(configuration: WriteConfiguration) throws -> FileWrapper {
        <#code#> // writing
    }
    
}

我的应用程序看起来像这样

代码语言:javascript
运行
复制
import SwiftUI

@main
struct MyDocApp: App {
    var body: some Scene {
        DocumentGroup(viewing: MyDoc.self) { file in
            ContentView(document: file.$document)
        }
    }
}

我已经在“签名和功能”中选择了“只读”。

我不确定在SwiftUI中还能有什么方法来防止这种情况。

Cmd+S触发保存行为,菜单选项仍包含在内。

下面是一个演示这个问题的示例项目-- Sample Project

我猜一种选择是在write方法中抛出一个错误,并处理它,告诉用户他们不允许保存文件。但这看起来有点...hacky!

有人能帮上忙吗?

EN

回答 1

Stack Overflow用户

发布于 2020-12-05 04:07:09

我也找不到方法,最后做了-hacky- way:

代码语言:javascript
运行
复制
struct MyDoc: FileDocument {

    ...

    func fileWrapper(configuration: WriteConfiguration) throws -> FileWrapper {
        throw CocoaError(.fileWriteNoPermission)
    }
}

至少它是可读的

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64901898

复制
相关文章

相似问题

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