设置NSSavePanel的默认保存位置

时间:2015-05-22 18:13:11

标签: objective-c macos nssavepanel

我正在尝试将我的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;
}

1 个答案:

答案 0 :(得分:3)

而不是:

[self.savePanel setDirectoryURL:[NSURL URLWithString:@"/Users/user/desktop"]];

尝试做:

[self.savePanel setDirectoryURL:[NSURL fileURLWithPath:@"/Users/user/desktop"]];

确保使用正确的用户名替换user