使用Mac保存对话框时崩溃



我们的用户遇到了以下情况的异常:

  1. 以任意名称保存文件,例如"test1"
  2. 打开保存对话框再次保存(对话框现在提示"test1"默认情况下)。
  3. 点击"保存",然后点击"替换"。覆盖现有文件。

结果:例外。

如果,在步骤3之前,用户单击对话框查找器窗口中的文件(名称为"test1")——没有例外。

我发现这里提到了这个问题,并尝试使用给出的建议-但是它没有帮助。

这是我的代码的缩减:

#define kMaxPathLength 1023
[self setDialogResult:[dialog runModal]];
if ([self dialogResult] == NSOKButton)
{
char pathBuffer[kMaxPathLength];
@try{
NSString* pathcopy = [[dialog URL] path];  // <== Causes the exception
[pathcopy getCString:pathBuffer maxLength:kMaxPathLength encoding: NSUTF8StringEncoding];
}
@catch(NSException* e){
<breakpoint>
}
}

带有注释的行导致异常:

ROSP: sandbox extension failure: nil result or wrong class type ((null)) for finalURL

注意:上述注释行和下面的行是原始语句的细分:

[[[dialog URL] path] getCString:pathBuffer maxLength:kMaxPathLength encoding:NSUTF8StringEncoding];

异常也会发生。

使用Xcode 12, Catalina.

有什么建议避免这个异常吗?

通过显式地在"另存为"对话框的建议名称中指定文件扩展名,最终解决了这个错误(实际上已经解决了)。当只指定基本名(没有扩展名)时,会发生错误。

最新更新