Сохранение местоположения документа по умолчанию в приложении на основе документов Какао - PullRequest
1 голос
/ 20 апреля 2011

Я создал приложение для рисования изображений на основе документа Какао.Я хочу, чтобы местоположение по умолчанию для нового документа, созданного с помощью моего приложения в диалоговом окне «Сохранить / Сохранить как», было в каталоге ~ / Pictures / MyAppName /.

Как этого добиться?

Iпопробовал более или менее то, что предложил Оле ниже, но это не работает.Вот моя реализация prepareSavePanel.Что я делаю не так?

- (BOOL)prepareSavePanel:(NSSavePanel *)savePanel
{
    if ([self fileURL] == nil) {
        //new, not saved yet
        [savePanel setExtensionHidden:NO];

        //set default save location        
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSPicturesDirectory, NSUserDomainMask, YES);

        if ([paths count] > 0) {
            NSString *userPicturesPath = [paths objectAtIndex:0];
            NSString *myDirPath = [userPicturesPath stringByAppendingPathComponent:@"MyAppName"];


            //create directory is it doesn't already exist
            NSFileManager *fileManager = [NSFileManager defaultManager];
            BOOL isDir;
            BOOL useMyAppDir = NO;
            if([fileManager fileExistsAtPath:myDirPath isDirectory:&isDir]){
                if (isDir) {
                    useMyAppDir = YES;
                }
            } else {
                //create the directory
                if([fileManager createDirectoryAtPath:myDirPath withIntermediateDirectories:YES attributes:nil error:nil]){
                    useMyAppDir = YES;
                }
            }

            if (useMyAppDir) {
                NSURL * myAppDirectoryURL = [NSURL URLWithString:myDirPath];
                [savePanel setDirectoryURL:myAppDirectoryURL];
            }
        }
    } else {
        [savePanel setExtensionHidden:[self fileNameExtensionWasHiddenInLastRunSavePanel]];
    }

    return YES;
}

1 Ответ

2 голосов
/ 20 апреля 2011

В вашем NSDocument подклассе переопределите -prepareSavePanel:

- (BOOL) prepareSavePanel:(NSSavePanel *)savePanel 
{
    // Set default folder if no default preference is present
    NSDictionary *userDefaults = [[NSUserDefaults standardUserDefaults] persistentDomainForName:[[NSBundle mainBundle] bundleIdentifier]];
    if ([userDefaults objectForKey:@"NSNavLastRootDirectory"] == nil) {
        NSArray *picturesFolderURLs = [[NSFileManager defaultManager] URLsForDirectory:NSPicturesDirectory inDomains:NSUserDomainMask];
        if ([picturesFolderURLs count] > 0) {
            NSURL *picturesFolderURL = [[picturesFolderURLs objectAtIndex:0] URLByAppendingPathComponent:@"MyAppName"];
            [savePanel setDirectoryURL:picturesFolderURL];
        }
    }
    return YES;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...