我的应用程序在启动时在应用程序支持文件夹中创建一个工作文件,然后将该文件保存在用户首选文件夹中(在首选项中指定为路径)。保存代码非常简单:
- (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/必须首先展开为正确的完整路径。