我正在用MacOS Big Sur上的SwiftUI构建一个基于文档的应用程序。我希望阻止用户保存文件,因为它仅用作查看器。我如何在SwiftUI中做到这一点?
由于协议FileDocument
,我被迫实现了写方法
import SwiftUI
struct MyDoc: FileDocument {
static var readableContentTypes: [UTType]
init(configuration: ReadConfiguration) throws {
<#code#> // reading
}
func fileWrapper(configuration: WriteConfiguration) throws -> FileWrapper {
<#code#> // writing
}
}
我的应用程序看起来像这样
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!
有人能帮上忙吗?
发布于 2020-12-05 04:07:09
我也找不到方法,最后做了-hacky- way:
struct MyDoc: FileDocument {
...
func fileWrapper(configuration: WriteConfiguration) throws -> FileWrapper {
throw CocoaError(.fileWriteNoPermission)
}
}
至少它是可读的
https://stackoverflow.com/questions/64901898
复制相似问题