Какао-эквивалент .NET Environment.SpecialFolder для сохранения настроек / настроек?

Как получить ссылку на папку для хранения настроек для каждого пользователя для приложения при написании приложения Objective-C Cocoa в XCode?

В .NET я бы использовал Environment.SpecialFolderперечисление:

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);

Что такое эквивалент какао?

11.12.2008 14:45:46
2 ОТВЕТА
РЕШЕНИЕ

В Mac OSX настройки приложения сохраняются автоматически через NSUserDefaults, который сохраняет их в файл .plist ~/Library/Preferences/. Вам не нужно ничего делать с этим файлом, NSUserDefaults все обработает за вас.

Если у вас есть файл данных в приложении без документов (например, AddressBook.app), вы должны сохранить его в ~/Library/Application Support/Your App Name/. Там нет встроенного метода, чтобы найти или создать эту папку, вам нужно сделать это самостоятельно. Вот пример из одного из моих собственных приложений: если вы посмотрите на некоторые шаблоны проектов XCode, вы увидите похожий метод.

+ (NSString *)applicationSupportFolder;
{
    // Find this application's Application Support Folder, creating it if 
    // needed.

    NSString *appName, *supportPath = nil;
    NSArray *paths = NSSearchPathForDirectoriesInDomains( NSApplicationSupportDirectory, NSUserDomainMask, YES );

    if ( [paths count] > 0)
    {
        appName = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleExecutable"];
        supportPath = [[paths objectAtIndex:0] stringByAppendingPathComponent:appName];

        if ( ![[NSFileManager defaultManager] fileExistsAtPath:supportPath] )
            if ( ![[NSFileManager defaultManager] createDirectoryAtPath:supportPath attributes:nil] )
                supportPath = nil;
    }

    return supportPath;
}

Имейте в виду, что если ваше приложение популярно, вы, вероятно, получите запросы на возможность иметь несколько файлов библиотеки для разных пользователей, использующих одну и ту же учетную запись. Если вы хотите поддержать это, соглашение состоит в том, чтобы запрашивать путь для использования при запуске приложения, удерживая нажатой клавишу alt / option.

14
11.12.2008 15:55:51

Для большинства вещей вы должны просто использовать API NSUserDefaults, который позаботится о сохранении настроек на диске для вас.

0
11.12.2008 18:03:38