Использование какао NSSavePanel в не изолированной среде вызывает ошибку подтверждения - PullRequest
0 голосов
/ 10 марта 2020

Только в 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 - [NSSavePanel наблюдатьValueForKeyPath: ofObject: изменение: контекст:] обнаружен непредвиденный класс NS для строки расширения песочницы! with backtrace (

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{
           ....
      }
 })

}

...