copyItemAtPath的行为在Ventura下是否发生了变化?返回"file doesn't exist"



我的应用程序在启动时在应用程序支持文件夹中创建一个工作文件,然后将该文件保存在用户首选文件夹中(在首选项中指定为路径)。保存代码非常简单:

- (void) saveFile: (NSString *) path {

NSFileManager   *dm = [NSFileManager defaultManager];
NSError         *error;

if ([dm copyItemAtPath:filePath toPath:path error:&error]) {
[dm removeItemAtPath:filePath error:&error];
}
}

自从移动到MacOS 13.0 Ventura以来,对copyItemAtPath的调用失败了,生成了一个错误,看起来像:

Error Domain=NSCocoaErrorDomain Code=4 "The file “Working 20221113075654.rtf” doesn’t exist." UserInfo={NSSourceFilePathErrorKey=/Users/jpurlia/Library/Application Support/My App/Working 20221113075654.rtf, NSUserStringVariant=(
Copy
), NSDestinationFilePath=~/Documents/My App/Saved File - 20221113075729.rtf, NSFilePath=/Users/jpurlia/Library/Application Support/APBA Baseball/Working 20221113075654.rtf, NSUnderlyingError=0x6000026ff180 {Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory"}}

我不确定这里发生了什么,因为这段代码已经存在很长一段时间了,工作文件确实存在于应用程序的文件夹中的应用程序支持文件夹。

有没有提示这里可能发生什么?

谢谢!

好了,我想明白了…目标路径不能再是相关路径,所以~/Documents/必须首先展开为正确的完整路径。

相关内容

  • 没有找到相关文章

最新更新