Какао-эквивалент .NET Environment.SpecialFolder для сохранения настроек / настроек? - PullRequest
4 голосов
/ 11 декабря 2008

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

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

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);

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

Ответы [ 2 ]

14 голосов
/ 11 декабря 2008

В 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.

0 голосов
/ 11 декабря 2008

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

...