gpt4 book ai didi

swift - 在非沙盒中使用 Cocoa NSSavePanel 会导致断言失败

转载 作者:行者123 更新时间:2023-12-03 17:08:49 25 4
gpt4 key购买 nike

仅在 MacOS 10.15 中,仅当尝试将文件保存到同一目录两次时,并且仅在打开 NSOpenPanel 后点击“取消”或“打开”。我的应用程序因以下堆栈跟踪而挂起,并且该应用程序无法恢复,我不得不终止它。

*** -[NSSavePanel _attachSandboxExtensions:toURL:orURLs:]、/BuildRoot/Library/Caches/com.apple.xbs/Sources/AppKit/AppKit- 中断言失败1894.30.142/Nav.subproj/OpenAndSavePanelRemote/NSVBOpenAndSavePanels.m:711-[NSSavePanelobserveValueForKeyPath:ofObject:change:context:] 捕获非致命NSInternalInconsistencyException“沙箱扩展字符串出现意外的类类型!”和回溯(

0   CoreFoundation                      0x00007fff2bc5c8ab __exceptionPreprocess + 250
1 libobjc.A.dylib 0x00007fff61f16805 objc_exception_throw + 48
2 CoreFoundation 0x00007fff2bc85d10 +[NSException raise:format:arguments:] + 88
3 Foundation 0x00007fff2e37e241 -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 191
4 AppKit 0x00007fff297987b2 __53-[NSSavePanel _attachSandboxExtensions:toURL:orURLs:]_block_invoke + 240
5 CoreFoundation 0x00007fff2bbd4037 __NSARRAY_IS_CALLING_OUT_TO_A_BLOCK__ + 7
6 CoreFoundation 0x00007fff2bbeac36 -[__NSSingleObjectArrayI enumerateObjectsWithOptions:usingBlock:] + 80
7 AppKit 0x00

有人遇到同样的问题并有解决方案吗?

这是我用来保存文件的代码:

@IBAction func saveAct(_ sender: Any) {
let savePanel = NSSavePanel()
defaultPath = UserDefaultUtil.pathDir

savePanel.directoryURL = URL(fileURLWithPath: defaultPath)
savePanel.nameFieldStringValue = "export"
savePanel.allowedFileTypes = ["jpeg"]
savePanel.accessoryView = accessoryView

// <--------------- Assertion failure HERE (the beginSheetModal not called)

savePanel.beginSheetModel(for: self.view.window!, completionHandler: {(num) -> Void in

if num == .OK {
....
}else{
....
}
})

}

最佳答案

有两种方法可以解决此问题:

  1. 保存时将文件扩展名添加到文件名中。将代码修改为

    savePanel.nameFieldStringValue = "export.jpeg"

  2. 通过设置将面板委托(delegate)保存到自身来实现 NSSavePanelDelegate 并实现以下功能:

    func panel(_ sender: Any, validate url: URL) throws { return TRUE; }

关于swift - 在非沙盒中使用 Cocoa NSSavePanel 会导致断言失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60618321/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com