我正在尝试将我的NSSavePanel实例配置为将默认的“where”位置设置为用户的桌面,而不是Documents文件夹,这是当前的目标。我尝试根据此accepted SO answer修改我的代码。但是,默认的“where”位置仍然是Documents文件夹。有人能告诉我我做错了吗?
- (void)saveFile:(NSString *)path extension:(NSString *)extension
{
// Build a save dialog
self.savePanel = [NSSavePanel savePanel];
self.savePanel.allowedFileTypes = @[ extension ];
self.savePanel.allowsOtherFileTypes = NO;
// Hide this window
[self.window orderOut:self];
[self.savePanel setDirectoryURL:[NSURL URLWithString:@"/Users/user/desktop"]];
// Run the save dialog
NSInteger result = [self.savePanel runModal];
if (result == NSFileHandlingPanelOKButton) {
// Build the URLs
NSURL *sourceURL = [NSURL fileURLWithPath:path];
NSURL *destinationURL = self.savePanel.URL;
// Delete any existing file
NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error = nil;
if ([fileManager fileExistsAtPath:destinationURL.path]) {
[fileManager removeItemAtURL:destinationURL error:&error];
if (error != nil) {
[[NSAlert alertWithError:error] runModal];
}
}
// Bail on error
if (error != nil) {
return;
}
// Copy the file
[[NSFileManager defaultManager] copyItemAtURL:sourceURL toURL:destinationURL error:&error];
if (error != nil) {
[[NSAlert alertWithError:error] runModal];
}
}
// Cleanup
self.savePanel = nil;
}
答案 0 :(得分:3)
而不是:
[self.savePanel setDirectoryURL:[NSURL URLWithString:@"/Users/user/desktop"]];
尝试做:
[self.savePanel setDirectoryURL:[NSURL fileURLWithPath:@"/Users/user/desktop"]];
确保使用正确的用户名替换user
。